我是 jq 的新手。我有一個看起來像這樣的 json 檔案
[
{
"k1":"a",
"k2":"aa",
"k3":["sk1":"a","sk2":"cc","sk3":"cc"],
"k4":["sk6":"zs","sk8":"we",...],
...
},
{
"k1":"b",
"k2":"ba",
"k3":["sk1":"a","sk3":"cc",...],
"k4":["sk6":"zs","sk8":"we",...],
...
},
{
"k1":"b",
"k2":"ba",
"k4":["sk6":"zs","sk8":"we",...],
...
}
...
]
我想獲取陣列中的所有條目,以使鍵 3(“ k3”)沒有子鍵“ sk2”。請注意,陣列的某些元素沒有“ k3”(所以我想洗掉那些),然后那些有“ k3”的元素有時沒有“ sk2”(這就是我想要的那些)。
如何在jq中完成這個?
uj5u.com熱心網友回復:
您可以使用select過濾器和has檢查鍵:
jq 'map(select(has("k3") and (.k3 | has("sk2") | not)))' file.json
[
{
"k1": "b",
"k2": "ba",
"k3": {
"sk1": "a",
"sk3": "cc"
},
"k4": {
"sk6": "zs",
"sk8": "we"
}
}
]
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/465316.html
