다음과 같은 줄이 포함된 파일이 있습니다.
proto udp
.
.
.
..
server 10.10.8.0/24 255.255.255.0
이 라인 서버 10.10.8.0/24 255.255.255.0에서 /24만 제거하는 방법이 필요합니다.
server 10.10.8.0 255.255.255.0
이 줄은 변경 가능하지만 유일한 상수는 / 다음과 같을 수 있다는 점을 고려하면
server 198.196.178.0/8 255.0.0.0
그래서 이렇게 되도록 하려면 이 줄에서만 /8을 제거하는 방법이 필요합니다.
server 198.196.178.0 255.0.0.0
답변1
sed
캡처된 그룹과 함께 GNU를 사용하십시오.
sed -r 's_^(server\s+([^.]+.){3}[0-9]{1,3})/[0-9]+(.*)_\1\3_' file.txt
파일을 그 자리에서 편집하려면 -i
다음 옵션을 사용하세요.
sed -ri 's_^(server\s+([^.]+.){3}[0-9]{1,3})/[0-9]+(.*)_\1\3_' file.txt
예:
% sed -r 's_^(server\s+([^.]+.){3}[0-9]{1,3})/[0-9]+(.*)_\1\3_' <<<'server 10.10.8.0/24 255.255.255.0'
server 10.10.8.0 255.255.255.0
% sed -r 's_^(server\s+([^.]+.){3}[0-9]{1,3})/[0-9]+(.*)_\1\3_' <<<'server 198.196.178.0/8 255.0.0.0'
server 198.196.178.0 255.0.0.0