我試圖用這個命令替換:SED查找和使用大括號
sed -i 's#\{test1\}#test2#' /example/myfile.txt
要與test2
取代的{test1}
實例。
我得到的錯誤:
sed: -e expression #1, char 17: Invalid preceding regular expression
我不能正確地轉義大括號?
我試圖用這個命令替換:SED查找和使用大括號
sed -i 's#\{test1\}#test2#' /example/myfile.txt
要與test2
取代的{test1}
實例。
我得到的錯誤:
sed: -e expression #1, char 17: Invalid preceding regular expression
我不能正確地轉義大括號?
sed -i 's#{test1}#test2#' /example/myfile.txt
你不需要逃避{}
你是不是轉義大括號的。在sed
中,默認的正則表達式是BRE,其中\{
和\}
表示範圍表達式。由於test1
不是範圍,您的BRE不正確。
要解決它,你既可以丟棄反斜槓(括號並不是特別在BREs)或保持不變,告訴SED使用ERES(-r
標誌與GNU的sed,-E
標誌和BSD/MacOSX的SED)。
TIL BRE ERE。 BREs在'sed'世界非常方便。 – ericsoco 2016-12-29 20:37:16
嗯..我刪除了反斜槓,它似乎工作正常。 – atdev 2012-02-09 05:26:43