且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用JQ获取所有唯一的JSON键名称

更新时间:2023-08-26 11:20:46

当然。

$ 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