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)"