如何合并包含“[,],{,}”字符的行与sed / awk

时间:2017-07-04 11:11:57

标签: bash sed

我有一个文本文件,其格式如下:

{
    "297723": [
        [
          1,
          2
        ],
        [
          5,
          10
        ],
        [
          1,
          157
        ]
      ],
    "369258": [
        [
          3,
          4
        ],
        [
          6,
          11
        ],
        [
          30,
          200
        ]
      ]
}

我怎样才能让它看起来像这样?

{"297723": [[1, 2], [5, 10], [1,157]],
{"369258": [[3, 4], [6, 11], [30,200]]}

当然,有几个块,我只是附加第一个(以“{”开头,最后一个以“}”结束 - 在所有其余部分中,有一个数字(例如我的例子中的“2927723”) )通知新区块。

1 个答案:

答案 0 :(得分:1)

您的输入是有效的JSON,因此您可以针对此案例应用 jq 工具:

jq -c '.' yourfile | sed 's/,"/,\n"/'

输出:

{"297723":[[1,2],[5,10],[1,157]],
"369258":[[3,4],[6,11],[30,200]]}
  • -c - 以压缩输出形式
  • 打印输入