gpt4 book ai didi

linux - 替换特定参数分隔符后的字符串/行

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:32 25 4
gpt4 key购买 nike

我有以下 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 one liner 代码中需要修复什么?

其他仍然无效的例子:

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

关于linux - 替换特定参数分隔符后的字符串/行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29341727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com