从1.4开始,
*操作员现在可以做到这一点。当给定两个对象时,它将递归合并它们。例如,
jq -s '.[0] * .[1]' file1 file2
重要:请注意该-s (--slurp)
标志,它将文件放置在同一阵列中。
会给你:
{ "value1": 200, "timestamp": 1382461861, "value": { "aaa": { "value1": "v1", "value2": "v2", "value3": "v3", "value4": 4 }, "bbb": { "value1": "v1", "value2": "v2", "value3": "v3" }, "ccc": { "value1": "v1", "value2": "v2" }, "ddd": { "value3": "v3", "value4": 4 } }, "status": 200}如果您还想摆脱其他键(如您的预期结果),一种方法是:
jq -s '.[0] * .[1] | {value: .value}' file1 file2或者大概更有效(因为它没有合并任何其他值):
jq -s '.[0].value * .[1].value | {value: .}' file1 file2


