json 如何在bash中使用jq过滤键

g0czyy6m  于 2023-01-27  发布在  其他
关注(0)|答案(1)|浏览(235)

我有以下JSON:

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

我希望使用jq作为压缩响应(使用jq -c "keys")来获取所有密钥。
如果没有键"key_to_filter",我如何获得这个JSON的所有键?
换句话说,我需要["a_key","c_key"]

bkhjykvo

bkhjykvo1#

你可以从键数组中减去这个键:

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

Demo
更详细但也更有效(如果重要的话),您可以根据需要使用map to select

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

Demo
正如@artild在评论中指出的,你也可以先del ete有问题的项目,然后再得到所有的键:

jq -c 'del(.key_to_filter) | keys'

Demo
输出:

["a_key","c_key"]

注意,keys返回一个排序数组,如果你想让它们不排序,可以使用keys_unsorted

相关问题