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

如何用jq和awk拆分大型JSON文件并按Participant_id命名输出

解决方案

纯jq实现(推荐,需jq 1.6+)

直接用jq内置的writefile函数,一步完成拆分、命名和格式化输出,无需额外管道工具,处理大型文件效率更高:

jq '.[] | "\(.Participant_id).json" as $filename | . | writefile($filename)' Metadata_01.json

命令说明:

  • 移除了原命令的-c参数,jq默认会输出格式化缩进的JSON结构。
  • \(.Participant_id).json提取每个对象的Participant_id字段作为文件名,自动拼接.json后缀。
  • writefile($filename)将当前格式化后的JSON对象写入对应文件。

兼容低版本jq的方案(jq < 1.6)

如果你的jq版本不支持writefile,可以结合bash循环实现:

jq -r '.[] | @sh "\(.Participant_id).json" as $fn | ($fn, .)' Metadata_01.json | while read -r fn && read -d '' -r content; do echo "$content" > "$fn"; done

命令说明:

  • @sh用于转义文件名中的特殊字符(如空格、引号),避免写入文件时出错。
  • 先输出文件名,再输出格式化后的JSON内容,通过while循环分别读取文件名和对应内容,写入目标文件。

注意事项

如果JSON数组中存在重复的Participant_id字段值,后续的对象会覆盖之前生成的同名文件。若需要避免覆盖,可以在文件名中追加序号或其他标识,例如:

jq '.[] | "\(.Participant_id)_(\(input_line_number)).json" as $filename | . | writefile($filename)' Metadata_01.json

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:51:03