【问题标题】:How to filter a key using jq in bash如何在 bash 中使用 jq 过滤键
【发布时间】:2023-01-25 13:52:48
【问题描述】:

我有以下 JSON:

{
  "a_key": "A",
  "key_to_filter": "B",
  "c_key": "C"
}

我想使用jq 获取所有密钥作为压缩响应(使用jq -c "keys")。

如果没有密钥“key_to_filter”,如何获取此 JSON 的所有密钥?

换句话说,我需要 ["a_key", "c_key"]

【问题讨论】:

    标签: json bash jq


    【解决方案1】:

    您可以从键数组中减去那个:

    jq -c 'keys - ["key_to_filter"]'
    

    Demo

    更详细但也更有效(如果重要的话),你可以使用 mapselect 你想要什么:

    jq -c 'keys | map(select(. != "key_to_filter"))'
    

    Demo

    ["a_key","c_key"]
    

    请注意,keys 返回一个排序数组。如果您希望它们不排序,请改用keys_unsorted

    【讨论】:

    • 或者你可以删除 keys 函数之前的键:del(.key_to_filter) |钥匙
    猜你喜欢
    • 1970-01-01
    • 2022-11-15
    • 2017-04-16
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多