使用JQ获取所有唯一的JSON键名称 [英] Get all unique JSON key names with JQ

查看:12
本文介绍了使用JQ获取所有唯一的JSON键名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有一种方法可以获取所有唯一键名称,而不在jq外部调用唯一排序?

示例文件:

{"a": 1, "b": 2, "c": 3}
{"a": 4, "b": 5, "d": 6}

jq以及我现在使用的排序命令,但我认为它效率不高:

jq -r keys[] example | sort -u                                                                               
a                                                                                                                                       
b                                                                                                                                       
c                                                                                                                                       
d     

     

推荐答案

当然。

$ jq -n '[inputs | keys[]] | unique | sort' input.json
[
  "a",
  "b",
  "c",
  "d"
]

这里有一个可能执行得更好的选项,因为它不需要将密钥收集到数组中。

$ jq -n 'reduce (inputs | keys[]) as $k ({}; .[$k] = null) | keys' input.json

或者更好:

$ jq -n 'foreach (inputs | keys[]) as $k ({}; .[$k]+=1; if .[$k]==1 then $k else empty end)' input.json

对于较大的文件,您无论如何都希望将其流入,因此使用此变体:

$ jq --stream -n 'foreach inputs[0][-1] as $k ({}; .[$k]+=1; if .[$k]==1 then $k else empty end)' input.json

这篇关于使用JQ获取所有唯一的JSON键名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆