ファイルから文字列を削除するためにPerlを使用していますが、ファイルから文字列を削除しますが、実際の行は削除されないため、ファイルの次の挿入は記録される次の行になります。
使用されたPerlコマンド:
host=ABC1234
perl -lpi -e "s/$host//g" /tmp/exclude_list
出力:
ABC1234
ベストアンサー1
そして
cp /tmp/exclude_list /tmp/exclude_list.tmp
grep -Fx -v -e "$host" /tmp/exclude_list.tmp >/tmp/exclude_list
rm /tmp/exclude_list.tmp
すべての行を削除します正確に一致する文字列です$host
。行を削除-Fx
するように変更-F
含むひも。正規表現-F
として使用するには使用しないでください。$host
またはPerlを使用してください。
perl -i -sn -e 'print unless /$host/' -- -host="$host" /tmp/exclude_list
perl
ここで使用されるオプションは、PerlがコマンドラインからPerl変数をインスタンス化し、Perlがコードの周りに提供する暗黙のループ内でのみ明示的に印刷できるようにする-i
内部編集のためのものです。実際のコードをパラメータとして渡します。-s
$host
-n
-e
Perlコードは、正規表現と一致しないすべての行を削除します$host
。
$host
次のように使用ひも:
perl -i -sn -e 'print unless index($_, $host) >= 0' -- -host="$host" /tmp/exclude_list