sed:使用捕获组的“重复操作符操作数无效”

时间:2013-04-27 21:36:37

标签: sed

标准正则表达式

我有一个(部分)JSON字符串,如下所示:

"99887":{"foo":"99887","bar":"paul"},"88776":{"foo":"88776"...

我需要在每个{之前删除数字字符串以产生这个:

{"foo":"99887","bar":"paul"},{"foo":"88776"...

对于普通正则表达式,我使用模式("\d{5}"\:)(\{)并保留$2

SED

我很难将其变成sed命令:

sed 's/\("\d{5}":\)\(\{\)/\2/g'

生成错误消息

  

错误:重复操作符操作数无效

在其他情况下,这些消息似乎与sed不支持前瞻/后退(我不使用)这一事实有关。

1 个答案:

答案 0 :(得分:3)

你的问题是:

  • 您没有使用-r,因此sed将不会使用扩展正则表达式
  • \d{5}将无法被sed识别,\{无效,因为它未关闭

(没有-r,您可以使用\{5\};使用-r,您可以使用{5}

这一行应该给你预期的输出:

 sed 's/"[0-9]*":{/{/g' file