我想使用这个命令:
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
将{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使用 EREs(GNU sed使用-r
标志,BSD/MacOSX sed使用-E
标志)。