Unix Perlは文字列の一致と行を削除します

Unix Perlは文字列の一致と行を削除します

ファイルから文字列を削除するために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

おすすめ記事