我有以下数据文件:
[
{
"createTime": "2021-12-15T09:39:59.812377Z",
"etag": ""15d377a6a77bab"",
"labels": {
"is-secret": "false"
},
"name": "projects/xxx/secrets/xxx",
"replication": {
"automatic": {}
}
},
{
"createTime": "2021-12-19T03:47:53.594568Z",
"etag": ""15d377a868c624"",
"labels": {
"is-secret": "true"
},
"name": "projects/xxx/secrets/xxx",
"replication": {
"automatic": {}
}
}
]
我正在尝试使用以下查询选择标签为issecret=true的所有元素:
cat data.txt | jq '.[] | map(select( any(.labels[]; .is-secret == "true" )))'
输出必须是一个数组。
收益率:jq:1编译错误
有人能帮忙吗?干杯
您可以将map(select(...))
直接应用于数组,并返回过滤后的数组:
jq 'map(select(.labels["is-secret"] == "true"))'
由于连字符,您还必须引用is-secret
;方括号表示法是可选的,但它是手册所使用的;因此
jq 'map(select(.labels."is-secret" == "true"))'
也会起作用。