【发布时间】:2021-06-09 23:28:18
【问题描述】:
我目前正在学习如何使用jq。我有一个 json 对象,我可以使用jq 循环和读取值,例如cat test.json | jq -r '.test'。但是,当我只想显示具有outdated 或deprecated = true 但如果relase = never-update-app 或never-upgrade-app 从结果中省略时,我遇到了一些复杂性。我正在尝试cat test.json | jq '.test | select(.[].outdated==true)',但这并没有返回预期的结果。这是否可以通过 jq 实现并以以下所需格式显示?
我想要的输出如下所示:
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
}]
}
【问题讨论】:
-
输入无效,第51行缺少逗号
-
@BenjaminW。现在已经更正了。谢谢!
-
可能重复:stackoverflow.com/questions/18592173/… 这里唯一不同的是您希望有多个条件,并且可能您希望格式化输出。格式是问题的一部分吗?
-
这是一个解决多个条件的问题:stackoverflow.com/questions/33057420/…
-
@Weeble 谢谢你指点我。是的,格式化也是其中的一部分。我可以在我的帖子中解决这个问题