jq - 如何打印键(不是键的值)并迭代键以打印子值
jq - How to print key (not value of key) and iterate over keys to print sub value
我可以打印密钥:
$ jq -r '.indices | keys[]'
plan
resource
user
我可以打印子值:
$ jq '.indices[] | .primaries.docs.count'
14208
1427143
104475
如何打印键和子值?
plan: 14208
resource: 1427143
user: 104475
以下可能有效:
$ jq -r '.indices | to_entries[] | "\(.key): \(.value.primaries.docs.count)"' input.json
plan: 14208
resource: 1427143
user: 104475
以上假设输入为:
{
"indices": {
"plan": { "primaries": { "docs": { "count": 123 }}},
"resource": { "primaries": { "docs": { "count": 456 }}},
"user": { "primaries": { "docs": { "count": 789 }}}
}
}
to_entries
将对象 indices
转换为数组:
[
{ "key": "plan", "value": { ... } },
...,
...
]
然后可以轻松映射。
这里有一个直接使用键的解决方案:
.indices
| keys[] as $k
| "\($k): \(.[$k].primaries.docs.count)"
我可以打印密钥:
$ jq -r '.indices | keys[]'
plan
resource
user
我可以打印子值:
$ jq '.indices[] | .primaries.docs.count'
14208
1427143
104475
如何打印键和子值?
plan: 14208
resource: 1427143
user: 104475
以下可能有效:
$ jq -r '.indices | to_entries[] | "\(.key): \(.value.primaries.docs.count)"' input.json
plan: 14208
resource: 1427143
user: 104475
以上假设输入为:
{
"indices": {
"plan": { "primaries": { "docs": { "count": 123 }}},
"resource": { "primaries": { "docs": { "count": 456 }}},
"user": { "primaries": { "docs": { "count": 789 }}}
}
}
to_entries
将对象 indices
转换为数组:
[
{ "key": "plan", "value": { ... } },
...,
...
]
然后可以轻松映射。
这里有一个直接使用键的解决方案:
.indices
| keys[] as $k
| "\($k): \(.[$k].primaries.docs.count)"