我有一个具有多个级别的任意结构,等等。我需要选择包含一个名为key的键的所有对象 updateDate
。我怎么用jq做到这一点?我提出了一种方法,但是当它访问我必须要插入的叶子时,它也会在无效数据类型上产生错误:
jq 'recurse(.[]) | has("updateDate")' | grep -Fv error
我真的不明白如何检查类型或叶子,我怀疑有一种更简单的方法来实现我想要的东西?
我有一个具有多个级别的任意结构,等等。我需要选择包含一个名为key的键的所有对象 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'
在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'
未经测试:如何 jq 'recurse(.[]?) | objects | has("updateDate")'
?