使用jq在cli上解析Json
假设我有以下json对象:使用jq在cli上解析Json,json,bash,command-line,jq,Json,Bash,Command Line,Jq,假设我有以下json对象: { "d": { "e": { "bar": 2 } }, "a": { "b": { "c": { "foo": 1 } } } } 我想在不键入'.a.b.c.foo' 我意识到我能做到。。。 echo'{“a”:{“b”:{“c”:{“foo”:1}}},“d”:{“e”:{“bar”:2}}}}}}{jq.[].[].[].foo'但是jq中是否存在递归野生型
{
"d": {
"e": {
"bar": 2
}
},
"a": {
"b": {
"c": {
"foo": 1
}
}
}
}
我想在不键入'.a.b.c.foo'
我意识到我能做到。。。
echo'{“a”:{“b”:{“c”:{“foo”:1}}},“d”:{“e”:{“bar”:2}}}}}}{jq.[].[].[].foo'
但是jq中是否存在递归野生型?像**?我肯定jq不支持*,有没有办法让jq支持jsonpath?
或者甚至只是另一个支持json路径的cli工具?在jq 1.4中,您可以这样做:
$ jq '..|.foo?' file.json
如果你坚持使用1.3,你可以使用
$ jq 'recurse(if type == "array" or type == "object" then .[] else empty end) | if type == "object" then . else empty end | .foo' file.json
这有点像一口。。。这就是为什么1.4有
。
,它通过
中的所有iterables进行递归,还有?
操作符,它不需要为不可能的对象建立索引。递归for in循环怎么样?遍历层次结构中每个对象的所有属性,可以在此处找到更多信息。本质上:jq'...foo?|选择(type!=“null”)”