除非您的jq拥有
inputs,否则您将不得不使用该
-s标志来吞噬对象。然后,您必须进行大量的操作:
- 每个对象都需要映射到键/值对
- 将对展平为单个数组
- 通过密钥将对分组
- 将每个累积值的组映射到单个键/值对
- 将对映射回对象
map(to_entries) | add | group_by(.key) | map({ key: .[0].key, value: map(.value) | add }) | from_entries使用jq 1.5,可以大大改善这一点:您可以消除拖尾的感觉,而直接阅读
inputs。
$ jq -n ' reduce (inputs | to_entries[]) as {$key,$value} ({}; .[$key] += $value) ' input.json由于我们只是累加每个对象中的所有值,因此遍历所有输入的键/值对并将它们加起来会更容易。



