Perl
Unix perl 匹配字元串和刪除行
我使用 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