用jq组合任意数量的JSON文件

问题描述 投票:0回答:1

我可以使用 jq 组合 2 个 json 文件,因此:

jq -s '.[0] * .[1]' file1.json file2.json >merged.json

我可以通过使用循环组合任意数量的 json 文件,并在第二次和后续迭代中,使用前一个操作的输出作为输入之一。通过进程替换,可以通过管道完成:

jq -s '.[0] * .[1]' file1.json file2.json | \
   jq -s '.[0] * .[1]' <(cat) file3.json | \
   jq -s '.[0] * .[1]' <(cat) file4.json ...

但是如何在不编写中间版本的情况下编写任意数量文件合并的脚本?

(我想,如果文件数量非常多,我将会遇到 ulimits/文件句柄问题 - 我还不担心这一点)。

bash jq
1个回答
0
投票

您可以通过一次调用 jq 来完成此操作:

jq -n 'reduce inputs as $i({};. * $i)' file{1..4}.json
© www.soinside.com 2019 - 2024. All rights reserved.