如何用jq提取一个基于其子值的key?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用jq提取一个基于其子值的key?相关的知识,希望对你有一定的参考价值。
我正试图用jq处理一些JSON。 具体来说,我想要一个特定的键,基于它的子值。 例子,给定。
"foo": "primary": true, "blah": "beep",
"bar": "primary": false, "blah": "narf",
"baz": "primary": false, "blah": "poink",
我想要 "foo "这个字符串 因为这个键的子值 "primary "是true (我可以保证只有一个词条的primary = true, 这是因为生成JSON的原因)
到目前为止,我所能做到的最好的是。
jq -r '.[] | select(.primary == true)'
但它返回的是 "foo "的值,而不是字符串 "foo "本身。 翻阅手册,到目前为止,我还没有找到专门抓取键的方法。
您有什么指点吗?
答案
你需要将你的对象 "拆分 "成一个条目数组,例如:"foo": "blah": "beep", "bar": "primary": false, "..."。
[
"key": "foo",
"value":
"primary": true,
"blah": "beep"
//...
]
然后你可以用 .value.primary
并将结果与 .key
:
to_entries | map(select(.value.primary) | .key)
返回。
[
"foo"
]
或者只得到数组中的第一个项目。(谢谢 @nbari)
to_entries | map(select(.value.primary) | .key)[0]
以上是关于如何用jq提取一个基于其子值的key?的主要内容,如果未能解决你的问题,请参考以下文章
如何用vlookup不提取第一列内容,而提取最后一列的数据?或用其他函数也行!