sed はファイルから行を検索し、文字を削除します。

sed はファイルから行を検索し、文字を削除します。

次の行を含むファイルがあります。

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

おすすめ記事