在特定参数的分隔符之后替换 string/line
Replace the string/line after separator on specific param
我有以下 Perl 代码,
我的目标是替换“=”分隔符之后的行,以及在PARAM变量
中定义的行
more file.txt
PARAM=I WANT TO REPLACE THIS LINE
bash-3.00# export VAL="THIS IS THE NEW LINE FOR EXAMPLE"
bash-3.00# perl -i -pe 's/(PARAM=)+/${*}$ENV{VAL}/' file.txt
bash-3.00# more file.txt
THIS IS THE NEW LINE FOR EXAMPLEI WANT TO REPLACE THIS LINE
但实际上它替换了所有包含 PARAM 本身的行
预期的结果应该是
more file.txt
PARAM= THIS IS THE NEW LINE FOR EXAMPLE
请指教我的 Perl 一行代码中需要修复什么?
其他仍然无效的例子:
bash-3.00# more file.txt
PARAM=SOME STRING
bash-3.00# export VAL="PUT THAT"
bash-3.00# perl -i -pe 's/PARAM=\K.+/$ENV{VAL}/' file.txt
bash-3.00# more file.txt
PARAM=SOME STRING
你可以使用\K
(正面看后面)和.+
删除PARAM=
之后的所有内容直到换行符,
perl -i -pe 's/PARAM=\K.+/ $ENV{VAL}/' file.txt
或对于较旧的 perl,
perl -i -pe 's/(?<=PARAM=).+/ $ENV{VAL}/' file.txt
我有以下 Perl 代码,
我的目标是替换“=”分隔符之后的行,以及在PARAM变量
中定义的行more file.txt
PARAM=I WANT TO REPLACE THIS LINE
bash-3.00# export VAL="THIS IS THE NEW LINE FOR EXAMPLE"
bash-3.00# perl -i -pe 's/(PARAM=)+/${*}$ENV{VAL}/' file.txt
bash-3.00# more file.txt
THIS IS THE NEW LINE FOR EXAMPLEI WANT TO REPLACE THIS LINE
但实际上它替换了所有包含 PARAM 本身的行
预期的结果应该是
more file.txt
PARAM= THIS IS THE NEW LINE FOR EXAMPLE
请指教我的 Perl 一行代码中需要修复什么?
其他仍然无效的例子:
bash-3.00# more file.txt
PARAM=SOME STRING
bash-3.00# export VAL="PUT THAT"
bash-3.00# perl -i -pe 's/PARAM=\K.+/$ENV{VAL}/' file.txt
bash-3.00# more file.txt
PARAM=SOME STRING
你可以使用\K
(正面看后面)和.+
删除PARAM=
之后的所有内容直到换行符,
perl -i -pe 's/PARAM=\K.+/ $ENV{VAL}/' file.txt
或对于较旧的 perl,
perl -i -pe 's/(?<=PARAM=).+/ $ENV{VAL}/' file.txt