我不知道到底该怎么调用它,但我已经能够用两个单行来重现我的问题。
从包含以下内容的文件“test.txt”开始:
foo
运行以下命令后(在 bash 中):
perl -n -e "s/(\w)oo/$1ar/; print;" test.txt
输出是'far
'
但是,当我引入一个包含替换字符串的变量时,
perl -n -e '$bar = q($1ar); s/(\w)oo/$bar/; print;' test.txt
输出是'$1ar
'。
我需要更改哪些内容才能使第二个程序也输出“far
”以及我需要学习哪些关键字才能使这个答案在 Google 上可用?
另外,我尝试将第二个更改为 s///e,但没有效果。
编辑:这不是我真正想问的问题,即 here .
最佳答案
这对我有用(在 bash 中;您可能需要更改引号):
perl -n -e '$bar = "\${1} . ar"; s/(\w)oo/$bar/ee; print;' test.txt
ee
将替换部分评估为文本字符串。见 perlop(1) .
关于regex - 如何规避 Perl 的字符串转义 s///中的替换字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4880888/