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