Perl

Unix perl 匹配字元串和刪除行

  • February 22, 2019

我使用 perl 從文件中刪除字元串,它正在從文件中刪除字元串,但實際行沒有被刪除,因此下一次插入文件將被寫入下一行。

使用的 Perl 命令:

host=ABC1234
perl -lpi -e "s/$host//g" /tmp/exclude_list

輸出:

ABC1234 

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此處使用的選項用於-i就地編輯,-s允許 Perl$host從命令行實例化 Perl 變數,並且-n僅從 Perl 圍繞程式碼提供的隱式循環中顯式列印。將-e實際程式碼作為參數。

Perl 程式碼將刪除所有與正則表達式不匹配的行$host

用作字元串$host_

perl -i -sn -e 'print unless index($_, $host) >= 0' -- -host="$host" /tmp/exclude_list

引用自:https://unix.stackexchange.com/questions/502265