我正在尝试替换文件中的字符串,但是我的程序似乎正在删除字符串,而不是用我想要的字符串替换

perl -ne 'print unless s/ServerIp=${Solid.host}/ads/;' needsToBeReplaced.prp > blah.txt

将删除

“ ServerIp = $ {Solid.host}”,只需将该行留空,而不是在其位置打印“ ads”

我正在Windows中运行。 另外我在正则表达式中没有第3个参数,因为我只想更改第一个参数。 我也尝试过

perl -pi -e 's/ServerPort=${Solid.port}/ads/;' needsToBeReplaced.txt 

但出现权限错误,因此无法进行就地编辑

===============>>#1 票数:6 已采纳

仅当替换不成功时才打印该行。 如果要始终打印,请不要使用, unless

perl -pe "s/ServerIp=\${Solid.host}/ads/;" needsToBeReplaced.prp > blah.txt

您还应该转义美元符号以防止Perl对其解释。

另请注意,在MS Windows上必须使用双引号。

===============>>#2 票数:0

现在,如果替换成功,它将返回一个true值,这意味着unless为true, unless将不会打印任何内容。 您可以这样做:

perl -ne 's/ServerIp=${Solid.host}/ads/; print;' needsToBeReplaced.prp > blah.txt

  ask by user1013905 translate from so

未解决问题?本站智能推荐: