我不知道到底该怎么称呼它,但我已经能够用两条单行语句重现我的问题。
从包含以下内容的文件“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 https://stackoverflow.com/questions/4881345/how-to-circumvent-perls-string-escaping-the-replacement-string-in-s-when-its.
这对我有用(在 bash 中;您可能需要更改引号):
perl -n -e '$bar = "\${1} . ar"; s/(\w)oo/$bar/ee; print;' test.txt
The ee
将替换部分评估为文本字符串。看佩洛普(1) http://perldoc.perl.org/perlop.html#s%2fPATTERN%2fREPLACEMENT%2fmsixpogce.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)