我已经对stackoverflow做了很多研究,但找不到任何相关的帖子。
假设我有一个喜欢
的json{
"talk": {
"docs": {
"count": 22038185,
"deleted": 626193
},
"store": {
"size_in_bytes": 6885993125,
"throttle_time_in_millis": 1836569
}
},
"list": {
"docs": {
"count": 22038185,
"deleted": 626193
},
"store": {
"size_in_bytes": 6885993125,
"throttle_time_in_millis": 1836569
}
}
}
我想过滤掉所有键中的“store”字段以获得类似
的输出{
"talk": {
"docs": {
"count": 22038185,
"deleted": 626193
}
},
"list": {
"docs": {
"count": 22038185,
"deleted": 626193
}
}
}
如何使用jq实现它?
答案 0 :(得分:3)
同时使用del
和recurse
。
jq 'del(recurse|.store?)' foo.json
您还可以使用..
短recurse
而不带参数:
jq 'del(..|.store?)' foo.json
?
可防止recurse
到达.store
无效过滤器的错误时出现错误。
答案 1 :(得分:3)
如果您只想删除"商店"当密钥出现在第二级时,请考虑:
map_values( del(.store) )
但如果删除的字段很多怎么办?我们只能保留' docs'
答案(在这种特殊情况下):
map_values( {docs} )