私はファイルを持っており、行があり、ネットマスク abcd/24 wxyz/32 などの ip が含まれています 特定の行を削除するにはどうすればよいですか? 私は使っています
sed -ie "s#a.b.c.d/24##g" %filname%
しかし、削除後はファイル内の空の文字列です。
ip をパラメーターとしてスクリプト内で実行し、sh の下の freebsd でも動作する必要があります。
sed -i '/<pattern-to-match-with-proper-escape>/d' data.txt
-i
オプションは元のファイルを変更します。
awk '!/<pattern-to-match-with-proper-escape>/' data.txt
sed を使用:
sed -i '\|a.b.c.d/24|d' file
コマンド ライン引数: 入力がコマンド ライン引数である場合、最初の引数 ($1) とします。
sed -i "\|$1|d" file
あなたの場合のように、 $1 を適切な引数番号に置き換えます。
g ではなく d (削除) を使用する必要があります。また、s (置換) は使用しないでください。
sed -ie '/a.b.c.d\/24/d' %filename%
スクリプトでは、このように使用する必要があります
IP=$1
IPA=${IP////\\/}
sed -i /"${IPA}"/d %filename%
また、スクリプト パラメータは次のように呼び出す必要があります。
./script.sh a.b.c.d/24
perl -i -lne 'print unless(/a.b.c.d\/24/)' your_file
または、インプレース編集を行いたくない場合は awk で:
awk '$0!~/a.b.c.d\/24/' your_file