使用sed替换Brackets []中的Double Quotes逗号分隔符

时间:2017-02-05 03:11:11

标签: awk sed grep

我将下面给出的数据与一个巨大的文件中的其他数据行更具体地说这是一个.json文件,我已经剥离了整个文件,除了这一个文件夹。

数据:

  • ," value":[" ABC-DE"," XYZ-MN"]
  • ,"值":[" MNO-RS&#34]," sub_id":01
  • "值":" [\" NEW-XYZ \"]""
  • ,"值":[" ABC-DE"" XYZ-MN"" MNO-BE"&#34 ; FRS-ND"]

我希望数据看起来像这样

  • ,"值":[" ABC-DE,XYZ-MN"] - 改变
  • ,"值":[" MNO-RS&#34]," sub_id":01-不变
  • "值":" [\" NEW-XYZ \"]"" -Unchnaged
  • ,"值":[" ABC-DE,XYZ-MN,MNO-BE,FRS-ND"] - 改变

到目前为止,我有这段代码,但它似乎正在替换整个文件","使用,而不是[]

中的那些
sed 's/\(\[\|\","\|\]\)/\,/g' testfile_1.txt >testfile_2.txt

任何帮助都会很棒

**注意:编辑第四个条件

干杯。

2 个答案:

答案 0 :(得分:1)

如果没有非贪婪匹配的perl正则表达式提供,那就更难了,但这似乎就是这样做的。

{{1}}

答案 1 :(得分:0)

感谢您的贡献@clearlight

以下是我多次出现问题的解决方案;

sed -e ': a' -e 's/\(\[[^]]*\)","/\1,/' -e 't a' testfile_1.txt >testfile_2.txt

使用标签'a'直到标签'a'的末尾

伪代码:

while (not end of line){ replace "," with ' }