我在替换文本中使用了反向引用,但在它后面还有一个字面量,出现了问题。我已经尝试了以下内容:
perl -0pi -e "s/(<tag1>foo<\/tag1>\n\s*<tag2>)[^\n]*(<\/tag2>)/\1${varWithLeadingNumber}\2/" file.xml
perl -0pi -e "s/(<tag1>foo<\/tag1>\n\s*<tag2>)[^\n]*(<\/tag2>)/\g{1}${varWithLeadingNumber}\g{2}/" file.xml
第一个方法会出现问题,因为${varWithLeadingNumber}以数字开头,但是我认为我上面第二种尝试中的\g{1}
结构应该可以解决这个问题。我使用的是perl 5.12.4版本。
perl -0pi -e 's/(<tag1>foo<\/tag1>\n\s*<tag2>)[^\n]*(<\/tag2>)/\g{1}25\g{2}/' file.xml
,结果是一样的。替换文本最终变成了g{1}25g{2}
。 - jonderry