在特定参数的分隔符之后替换 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