我正在尝试删除方括号并转换以下字符串:
{"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] 删除。
我来说两句