【问题标题】:how to remove square brackets from particular place in json file in linux using jq如何使用jq从linux中json文件中的特定位置删除方括号
【发布时间】:2019-07-30 09:08:57
【问题描述】:

我想删除方括号,如本例所示:

输入文件:file1.json

{ "regex_features": [
      [ // This bracket needs to be removed
        {
          "name": "jobname",
          "pattern": "[A-Z]+-[0-9]"
        },
        {
          "name": "project",
          "pattern": "[A-Z]{4}"
        },
        {
          "name": "summary",
          "pattern": "[a-z]+[a-z]+[a-z]{4}"
        },
        {
          "name": "description",
          "pattern": "[a-z]+[a-z]+[a-z]+[a-z]{4}"
        }
      ] // this bracket needs to be removed. 
     ]
}

请建议。

【问题讨论】:

  • 删除后输出是否仍然是有效的 JSON?
  • 是的,它将保持有效的 json,因为它是大 json 文件,这是其中的一小部分,我需要从中删除那些方括号。
  • jq .regex_features|=.[0] 应该可以工作

标签: json ubuntu sed jq


【解决方案1】:

假设你有这个 file.json:

{
  "name": "foo",
  "regex_features": [
    [
      {
        "name": "jobname",
        "pattern": "[A-Z]+-[0-9]"
      },
      {
        "name": "project",
        "pattern": "[A-Z]{4}"
      }
    ]
  ]
}

您可以使用更新赋值运算符将列表替换为其第一个元素(即内部列表):

jq '.regex_features|=.[0]' file.json

输出:

{
  "name": "foo",
  "regex_features": [
    {
      "name": "jobname",
      "pattern": "[A-Z]+-[0-9]"
    },
    {
      "name": "project",
      "pattern": "[A-Z]{4}"
    }
  ]
}

【讨论】:

  • 下面是建议命令的输出。 { "name": "foo", "regex_features": [ [ { "name": "jobname", "pattern": "[A-Z]+-[0-9]" }, { "name": "project", "pattern": "[A-Z]{4}" } ] ] }, "regex_features": null }
  • 我明白了。谢谢你。 :)
  • @VageeshSM 请不要忘记将您的问题标记为已回答
猜你喜欢
  • 1970-01-01
  • 2021-04-15
  • 2013-11-11
  • 1970-01-01
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
相关资源
最近更新 更多