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 查找并替换为大括号的主要内容,如果未能解决你的问题,请参考以下文章