我有一个任意结构有很多级别等等.我需要选择所有包含名为updateDate的对象.如何用jq?我想出了一种方法,但是当它访问一个我必须打破的叶子时,它也会产生无效数据类型的错误:
jq 'recurse(.[]) | has("updateDate")' | grep -Fv error
我真的不明白如何检查类型或叶子,我怀疑有一个更简单的方法来实现我想要的?
解决方法
在1.4你可以:
jq '..|.updateDate?'
如果你坚持使用1.3,你可以使用更长的程序,如:
jq 'recurse(if type == "array" or type = "object" then .[] else empty end) | if type == "object" then .updateDate else empty end'