我正在尝试使用此命令:
sed -i 's#\{test1\}#test2#' /example/myfile.txt
Run Code Online (Sandbox Code Playgroud)
替换{test1}with的实例test2.
我收到错误:
sed: -e expression #1, char 17: Invalid preceding regular expression
Run Code Online (Sandbox Code Playgroud)
我没有正确地逃脱花括号吗?
kev*_*kev 32
sed -i 's#{test1}#test2#' /example/myfile.txt
Run Code Online (Sandbox Code Playgroud)
你不需要逃避 {}
Mic*_*ber 22
你根本没有逃脱花括号.在sed,默认正则表达式是BRE,其中\{和\}表示范围表达式.由于test1不是范围,因此您的BRE不正确.
要修复它,你可以删除反斜杠(大括号在BRE中不是特殊的)或保持相同并告诉sed使用ERE(-r带有GNU sed的-E标志,带有BSD/MacOSX sed的标志).