我使用 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
这里使用的选项-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