愚蠢的SED/REGEX错误



sed -i.bak -e 's/^s+({s+group.+;s+port.+;)s+cp.+/ 1 }/g' <file>

我遇到了一个错误:

sed: -e expression #1, char 48: invalid reference 1 on ``s' command's RHS

我以前已经完成了几次这些SED命令,但没有遇到这个问题。我是否偶然发现了我缺少的细微角色模式?我已经在网站上测试了Regex,所以我很确定它很好。我只是在网上查看了许多SED示例,但找不到任何东西。提前致谢。匹配的示例行:

{ group = "127.0.0.1"; port = 222; cpu = 33; },

您的当前表达式被解析为BRE(基本正则表达式)。这意味着:

1)必须将括号逃往牙科捕获组, 2)不支持s,必须替换为[ t][[:space:]] 3)+量化器应变成{1,},因为不支持

您需要通过-r选项(在其他OSS中,-E可以做这项工作)使引擎将其解析为:

sed -i.bak -r -e 's/^s+({s+group.+;s+port.+;)s+cp.+/ 1 }/g' <file>

最新更新