我有一個使用 curl 命令獲得的 json 檔案,它如下所示。
{
"Storages": [
{
"Creation": "2020-04-21T14:01:54",
"Modified": "2020-04-21T14:01:54",
"Volume": "/dev/null",
"id": 10000,
"version": "20190925-230722"
},
{
"Creation": "2020-04-22T14:01:54",
"Modified": "2020-04-22T14:01:54",
"Volume": "/opt/home",
"id": 10001,
"version": "22a-20190925-230722"
},
{
"Creation": "2020-04-23T14:01:54",
"Modified": "2020-04-23T14:01:54",
"Volume": "/home/abcd",
"id": 10003,
"version": "21c-20190925-230722"
}
]
}
現在我需要通過遍歷上面的 json 陣列來形成另一個 json,如果版本以 21a 開頭,則從每個陣列中獲取鍵(id 和 voulme)。
uj5u.com熱心網友回復:
出于教育目的,這里有一個jq命令可以完成您想要的兩件事,但需要分 2 個單獨的步驟:
jq -r 'del(.Storages[] | select(.version | startswith("21a") | not))
.Storages[] | {id, version}'
第一部分 ( del(.Storages[] | select(.version | startswith("21a") | not))) 過濾掉沒有以 開頭的版本的陣列元素21a。第二部分 ( .Storages[] | {id, version}) 鉆取并提取您需要的特定資訊。
uj5u.com熱心網友回復:
您可以使用startswith內置函式,例如
jq -r '.Storages[] | select(.version | startswith("21a")) | {id, Volume}'
Demo
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/396588.html
