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

如何使用jq对JSON数据按字段分组并输出指定格式的原始文本

问题原因说明

你遇到的重复输出属于笛卡尔积问题,根源是原命令在同一个字符串插值内同时使用了两个独立的迭代器.v[].k1和.v[].k2:当g1分组有2条数据时,两个迭代器各有2个取值,jq会自动对所有取值做组合,最终生成2*2=4行错误的拼接结果。

正确jq命令
jq --raw-output 'group_by(.g)[] | (.[0].g), (.[] | "\(.k1) \(.k2)"), ""'

如果你需要去掉输出末尾多余的空行,可以使用调整后的版本:

jq --raw-output 'group_by(.g) | map((.[0].g), (.[] | "\(.k1) \(.k2)"), "") | .[0:-1][]'
命令逻辑说明
  • 第一步用group_by(.g)按g字段分组,输入会被处理为二维数组,每个子数组对应同一个g值的所有元素
  • 遍历每个分组时:
    • 先输出当前分组的g值.[0].g
    • 再遍历分组内的每一条数据,单独拼接同一条数据的k1、k2值,避免多迭代器的组合问题
    • 最后输出空行作为不同分组的分隔符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:36:02