使用sed从json数组和前一行的逗号中删除行

时间:2017-11-08 23:46:59

标签: json bash sed

我一直在尝试使用sed删除agent4以及代理3之后的逗号(因此它保持有效json)。我最初尝试sed 's/\"agent4\"/然后变成sed 's/,\n\s+\"agent4\"/,但我发现sed读取了单独的行,所以我无法从这里进步。

必须使用sed。

{
  "environments": {
    "default": {
      "machines": {
        "dev-machine": {
          "agents": [
            "agent1",
            "agent2",
            "agent3",
            "agent4"
          ]
        }
      }
    }
  }
}

2 个答案:

答案 0 :(得分:0)

使用适当的JSON工具,例如jq

% jq '.environments.default.machines["dev-machine"].agents |= .[:-1]' tmp.json
{
  "environments": {
    "default": {
      "machines": {
        "dev-machine": {
          "agents": [
            "agent1",
            "agent2",
            "agent3"
          ]
        }
      }
    }
  }
}

答案 1 :(得分:0)

尝试此命令,

$ sed '/3\"/ s/,//g; N; s/\"agent4\"/,/' data.json

参考:How can I use sed to replace a multi-line string?