替换文件中的值的 perl oneliner 命令很简单:
perl -i 's/oldval/newval/g' file.txt
但是,如果我们想要替换特定参数上的值(值位于“=”分隔符之后,那么 Perl 单行语法应该是什么?
例子
我们想要匹配VIP_IP字符串并将“=”分隔符后面的值替换为其他值192.17.200.100 (使用 Perl 单行语法)
more file.txt
VIP_IP=172.17.200.15
if [[ $VIP_IP = $HOST_IP ]]
then
.
.
.
预期成绩
more file.txt
VIP_IP=192.17.200.100
if [[ $VIP_IP = $HOST_IP ]]
then
.
.
.
答案1
将密钥包含在您的正则表达式中。
如果你确切地知道它是如何写的,那么你就可以使用积极的后视断言,而且它更容易:
perl -pi -e 's/(?<=^\$VIP_IP=).*/192.17.200.100/' your_file
否则,您必须使用以下命令在替换文本中包含匹配的键$1
:
perl -pi -e 's/(^\$VIP_IP\s*=).*/$1192.17.200.100/' your_file