用花括号找到并替换

时间:2012-02-09 05:01:46

标签: sed

我正在尝试使用此命令:

sed -i 's#\{test1\}#test2#' /example/myfile.txt

{test1}的实例替换为test2

我收到错误:

sed: -e expression #1, char 17: Invalid preceding regular expression

我没有正确地逃脱花括号吗?

2 个答案:

答案 0 :(得分:31)

sed -i 's#{test1}#test2#' /example/myfile.txt

您不需要转义{}

答案 1 :(得分:21)

你根本没有逃避花括号。在sed中,默认正则表达式是BRE,其中\{\}表示范围表达式。由于test1不是范围,因此您的BRE不正确。

要修复它,你可以删除反斜杠(大括号在BRE中不是特殊的)或保持相同并告诉sed使用ERE(-r标志与GNU sed,{{1} }标志与BSD / MacOSX sed)。