使用sed删除方括号

时间:2019-04-03 19:42:37

标签: regex sed

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

timelineregionexit

成为:

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

我已经尝试过此代码,但是仍然出现错误:

  

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

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

我该如何解决?

2 个答案:

答案 0 :(得分:1)

您可以使用

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

请参见online sed demo

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

  • :a-标签
  • s/\(\[[^][]*\)",[ \t]*"/\1,/
    • \(\[[^][]*\)-查找并捕获除][之外的0个或更多字符组成的组1。
    • ",-一个",子字符串
    • [^ \t]*-除空格和制表符外,零个或多个字符
    • "-一个"字符
  • \1,-替换为第1组的内容+逗号
  • ta-如果在前面的迭代中有匹配项,则循环到:a标签。

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

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

答案 1 :(得分:0)

如果您的数据位于“ d”文件中,请尝试使用gnu sed:

var position = {
  x: 1,
  y: 0
}

position.x=position.x.toFixed(2)