You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用jq编写脚本合并任意数量JSON文件且不生成中间文件?

合并任意数量JSON文件的高效方案

你无需通过循环多次调用jq,也不用依赖进程传递中间结果,一次调用jq就能完成所有文件的合并,全程不会生成中间文件。

核心命令

使用jq的-s选项将所有输入文件读入一个JSON数组,再通过reduce遍历数组逐个合并对象:

jq -s 'reduce .[] as $item ({}; . * $item)' file1.json file2.json file3.json ... > merged.json

命令说明

  • -s(--slurp):将所有输入的JSON文档合并为一个数组,比如3个对象文件会生成[obj1, obj2, obj3]格式的数组。
  • reduce .[] as $item ({}; . * $item):从空对象{}起始,依次将数组中的每个对象$item与当前结果合并(.*$item是jq的对象合并操作,后续对象会覆盖前面对象的同名键)。

简化写法(可选)

如果你的jq版本支持,也可以用更简洁的写法实现相同效果:

jq -s '.[0] * .[1:] | add' file1.json file2.json ...

不过reduce的写法更直观,便于理解合并逻辑。

优势对比

相比你之前尝试的循环调用方式,这个方案:

  • 避免多次启动jq进程的额外开销,效率更高;
  • 语法简洁,无需处理复杂的管道与进程替换;
  • 全程在单个jq进程内完成,无中间文件或临时数据传递问题。

内容的提问来源于stack exchange,提问作者symcbean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 21:32:38