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>