[英]jq - looping through json object and only displaying certain values
我目前正在學習如何使用jq
。 我有一個 json object 並且我可以使用jq
循環和讀取值,例如cat test.json | jq -r '.test'
cat test.json | jq -r '.test'
。 但是,當我只想顯示已outdated
或deprecated
= true
但如果relase
= never-update-app
或never-upgrade-app
從結果中省略的值時,我遇到了一些復雜性。 我正在嘗試cat test.json | jq '.test | select(.[].outdated==true)'
cat test.json | jq '.test | select(.[].outdated==true)'
cat test.json | jq '.test | select(.[].outdated==true)'
但這不會返回所需的結果。 這是否可以通過 jq 實現並以以下所需格式顯示?
我想要的 output 如下圖所示:
Release Name Installed Latest Old Deprecated
test-app 1.0.0 2.0.0 true false
json:
{
"test": [{
"release": "myapp1",
"Installed": {
"version": "0.3.0",
"appVersion": "v1.2.6"
},
"Latest": {
"version": "",
"appVersion": ""
},
"outdated": false,
"deprecated": false
}, {
"release": "myapp2",
"Installed": {
"version": "6.5.13",
"appVersion": "1.9.1"
},
"Latest": {
"version": "",
"appVersion": ""
},
"outdated": false,
"deprecated": false
}, {
"release": "test-app",
"Installed": {
"version": "1.0.0",
"appVersion": ""
},
"Latest": {
"version": "2.0.0",
"appVersion": ""
},
"outdated": true,
"deprecated": false
}, {
"release": "never-update-app",
"Installed": {
"version": "1.0.0",
"appVersion": ""
},
"Latest": {
"version": "3.0.0",
"appVersion": ""
},
"outdated": true,
"deprecated": false
}, {
"release": "never-upgrade-app",
"Installed": {
"version": "2.0.0",
"appVersion": ""
},
"Latest": {
"version": "2.0.0",
"appVersion": ""
},
"outdated": false,
"deprecated": true
}]
}
您在.test
中有一個數組。 如果要提取該數組的各個元素以在過濾器的 rest 中使用,請使用.test[]
。 如果要處理它們但將結果保存在數組中,請使用.test|map(...)
其中...
是要應用於數組元素的過濾器。
如本問題所述,您可以將select()
過濾器與多個條件一起使用。 因此,例如:
jq '.test[]|
select(
(.outdated or .deprecated) and
.release != "never-update-app" and
.release != "never-upgrade-app"
)'
使用括號,例如,假設您想用startswith
測試替換兩個“never-”測試。 通過用括號包圍管道,您可以隔離計算並獲得真/假答案以組合在 boolean 表達式中。
jq '.test[]|
select(
(.outdated or .deprecated) and
(.release|startswith("never-")|not)
)'
我認為這個關於在表格中格式化結果的答案可能就足夠了。 如果您有更具體的需求,我認為您可能希望將其拆分為一個單獨的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.