使用sed删除方括号

纳塔德科科

我正在尝试删除方括号并转换以下字符串:

{"id":1","color": ["green","red", "blue"]}, {"id":2, color:black}

成为:

{"id":1","color": "green,red,blue"}, {"id":2, color:black}

我已经尝试过此代码,但仍然收到错误:

sed:-e表达式#1,char 39:不匹配)或)

sed 's/\("color"\):[\([a-z0-9]*\)]/\1:"\2"/g'

我该如何解决?

维克多·史翠比维

您可以使用

sed ':a;s/\(\[[^][]*\)",[ \t]*"/\1,/;ta ; s/\("color"\):[ \t]*\[\([^][]*\)]/\1:\2/g;' file > newfile

请参阅在线sed演示

:a;s/\(\[[^][]*\)",[ \t]*"/\1,/;ta 细节

  • :a - 标签
  • s/\(\[[^][]*\)",[ \t]*"/\1,/
    • \(\[[^][]*\)-的发现和捕获到组1以外的任何0以上字符][
    • ",-",子字符串
    • [^ \t]* -除空格和制表符外,零个或多个字符
    • "-一个"字符
  • \1, -替换为第1组的内容+逗号
  • ta-循环以:a标记在前面的迭代中是否有匹配项。

s/\("color"\):[ \t]*\[\([^][]*\)]/\1:\2/g 细节

  • \("color"\)-将"color"子字符串匹配并捕获到组1中
  • : -冒号
  • [ \t]* -0+制表符或空格
  • \[-一个[字符
  • \([^][]*\)-第2组:除]以外的任何0+个字符[
  • ]-一个]字符
  • \1:\2-替换为组1值:,组2值
  • g -所有事件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章