sed 查找并替换为大括号

Posted

技术标签:

【中文标题】sed 查找并替换为大括号【英文标题】:sed find and replace with curly braces 【发布时间】:2012-03-01 14:48:40 【问题描述】:

我正在尝试使用这个命令:

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

test1 的实例替换为test2

我得到错误:

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

我没有正确地转义花括号吗?

【问题讨论】:

嗯..我删除了反斜杠,它似乎工作正常。 【参考方案1】:
sed -i 's#test1#test2#' /example/myfile.txt

你不需要转义

【讨论】:

【参考方案2】:

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

要修复它,您可以删除反斜杠(大括号在 BRE 中并不特殊)或保持不变并告诉 sed 使用 ERE(-r 带有 GNU sed 的标志,-E 带有 BSD/MacOSX 的标志sed)。

【讨论】:

直到 BRE ERE。 BRE 在sed 世界中非常方便。 TIL:BRE:基本正则表达式,ERE:扩展正则表达式; TIL:今天我学到了:)

以上是关于sed 查找并替换为大括号的主要内容,如果未能解决你的问题,请参考以下文章

仅在大括号外替换文件中的字符串

sed匹配多行并替换其中的内容

如何在记事本++中查找和替换括号的内容

从 qjsonarray 中删除大括号并从文档中替换方括号

用sed替换换行符分隔的花括号

在word中去掉所有括号中的不同内容,有简单方法吗