查找和使用perl脚本命令

问题描述:

我使用下面的一行命令替换词查找和使用perl脚本命令

perl -i -p -e 's/old/new/g;' *.config 

的正常工作正常字符串mulitiple文本文件替换特殊字符串。但是,如果我想用下面的特殊字符替换字符串,它不起作用。

perl -i -p -e 's/{{'TEXT' | translate}}/{{'TEXT.T.D' | translate}}/g;' *.config 

oldText会像= {{'TEXT' | translate}}

新文本就会像= {{'TEXT.T.D' | translate}}

+1

's/\ Q {{'TEXT'|翻译}} /../'检查perldoc -f quotemeta –

+0

haiСухой27,感谢您的宝贵意见。我试过perl -i -p -e's/\ Q {{'TEXT'|翻译}}/{{'TEXT.T.D'|翻译}} /克;” * .config ...但它不会取代旧值 –

+0

您的实际代码和/或数据与您在上面发布的内容不同。 '=>'https://eval.in/790023 –

|符号是正则表达式(其表示 “或”)元字符。为了使用它来表示它自己,你需要用反斜杠来转义它。

s/{{'TEXT' \| translate}}/{{'TEXT.T.D' | translate}}/g 

另一种替代方法(其将逃避正则表达式的所有可能有问题的字符)是使用\Q(“quotemeta”)转义序列。

s/\Q{{'TEXT' | translate}}/{{'TEXT.T.D' | translate}}/g