如何匹配参数并替换“=”分隔符后的值

如何匹配参数并替换“=”分隔符后的值

替换文件中的值的 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

相关内容