2017-05-08 102 views
0

我使用下面的一行命令替換詞查找和使用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 –

回答

1

|符號是正則表達式(其表示 「或」)元字符。爲了使用它來表示它自己,你需要用反斜槓來轉義它。

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

另一種替代方法(其將逃避正則表達式的所有可能有問題的字符)是使用\Q(「quotemeta」)轉義序列。

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