Sed 经济及社会发展局局长:;重复运算符操作数无效";使用捕获组
标准正则表达式 我有一个(部分)JSON字符串,如下所示:Sed 经济及社会发展局局长:;重复运算符操作数无效";使用捕获组,sed,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}":\)\(\{\)/\
"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
不支持向前看/向后看(我不使用它)。您的sed的问题是:
- 您没有使用
,因此sed不会使用扩展正则表达式-r
,\d
不会被sed识别,{5}
也无效,因为它未关闭\{
-r
,您可以使用{5}
;如果没有-r
,您可以使用{5}
)
这一行应该为您提供预期的输出:
sed 's/"[0-9]*":{/{/g' file
您的sed存在以下问题:
- 您没有使用
,因此sed不会使用扩展正则表达式-r
,\d
不会被sed识别,{5}
也无效,因为它未关闭\{
-r
,您可以使用{5}
;如果没有-r
,您可以使用{5}
)
这一行应该为您提供预期的输出:
sed 's/"[0-9]*":{/{/g' file
啊,是的,即使是我的初始正则表达式模式也不是很直接。很高兴知道
sed
不支持\d
和{n}
。如果添加-r
选项,{n}
将得到支持。@MarcelStör我相信它是Mac OS X上的-E
,而不是-r
@DavidW.thx。我对bsd sed没有太多经验。但是应该有类似的东西-r.arrgh,是的,甚至我最初的正则表达式模式也不是很直接。很高兴知道sed
不支持>\d
和{n}
。如果您添加-r
选项,将支持{n}
。@MarcelStör我相信它在Mac OS X上是-E
,而不是-r
@DavidW.thx上。我对bsd sed没有太多经验。但是应该有与-r类似的东西。