Sed 经济及社会发展局局长:;重复运算符操作数无效";使用捕获组

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}":\)\(\{\)/\

标准正则表达式

我有一个(部分)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
不支持向前看/向后看(我不使用它)。

您的sed的问题是:

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

这一行应该为您提供预期的输出:

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

您的sed存在以下问题:

  • 您没有使用
    -r
    ,因此sed不会使用扩展正则表达式
  • \d
    {5}
    不会被sed识别,
    \{
    也无效,因为它未关闭
(如果没有
-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类似的东西。