【问题标题】:Filter only part of input using select使用 select 仅过滤部分输入
【发布时间】:2017-08-11 10:12:32
【问题描述】:

给定这样的输入:

{
  "type": "collection",
  "foo": "bar",
  "children": [
    {
      "properties": {
        "country": "GB"
      },
      "data": "..."
    },
    {
      "properties": {
        "country": "PL"
      },
      "data": "..."
    }
  ]
}

如何使用jq 保留所有JSON 结构,但使用select() 过滤掉一些子项。例如,如果我只想返回国家为 GB 的孩子,我希望得到以下输出:

{
  "type": "collection",
  "foo": "bar",
  "children": [
    {
      "properties": {
        "country": "GB"
      },
      "data": "..."
    }
  ]
}

如果我只想要孩子,这很容易使用.children[] | select(.properties.country == "GB"),但不保留 JSON 的其余部分。

【问题讨论】:

    标签: json edit jq in-place


    【解决方案1】:

    关键是使用|=。在本例中,您可以使用以下模式:

    .children |= map(select(...))
    

    【讨论】:

    • 谢谢!我经常难以理解 jq 文档。
    猜你喜欢
    • 1970-01-01
    • 2022-11-30
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 2013-09-29
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多