我有一些我想使用 jq 決議的 JSON 資料
{{
"metadata":{
"name":"run1",
"uid":"b2c0ce",
"creationTimestamp":"2021-01-01T01:01:01Z"
},
"spec":{
"arguments":{}
},
"status":{
"phase":"Failed",
"startedAt":"2021-01-01T01:01:01Z",
"finishedAt":"2021-01-01T01:01:01Z"
}
},
{
"metadata":{
"name":"run2",
"uid":"9b0af3",
"creationTimestamp":"2021-01-01T01:01:01Z"
},
"spec":{
"arguments":{}
},
"status":{
"phase":"Succeeded",
"startedAt":"2021-01-01T01:01:01Z",
"finishedAt":"2021-01-01T01:01:01Z"}}}
我有一個腳本,用戶將輸入一個“名稱”,我希望能夠查找并提取他們輸入的名稱的元資料(如果存在)。因此,例如,如果他們輸入“run7”,我希望最終輸出為:
{"metadata":{
"name":"run7",
"uid":"b2c0ce",
"creationTimestamp":"2021-01-01T01:01:01Z"}
或者如果可能的話只顯示
"name":"run7",
"uid":"b2c0ce",
"creationTimestamp":"2021-01-01T01:01:01Z"
我得到的最接近的是:
jq -r '.[] | .[] | map({name: .name, uid: .uid, time: .creationTimestamp })' file.json
但我不確定我現在如何只能搜索某個名稱。我這樣做的方式給出了這個:
{
"name": "run10",
"uid": "af7b51f",
"time": "2021-01-01T01:01:01Z"
},
{
"name": null,
"uid": null,
"time": null
},
{
"name": null,
"uid": null,
"time": null
}
我也不希望它檢查“規范”或“狀態”,因為那是 null 的來源
uj5u.com熱心網友回復:
假設這些輸入物件在一個陣列中,
.[] | select(.metadata.name == "run2") | .metadata
將選擇物件所在的位置.metadata.name === run2。
然后它顯示該.metadata物件的,因此輸出變為:
{
"name": "run2",
"uid": "9b0af3",
"creationTimestamp": "2021-01-01T01:01:01Z"
}
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/410065.html
標籤:
