如何用JQ按id分组并对count字段求和?
使用JQ实现按ID分组求和Count字段
完整命令
假设你的数据文件名为data.json,执行以下命令即可得到预期结果:
jq -n 'reduce inputs as $item ({}; .[$item.id] += $item.count) | to_entries | map({id: .key, count: .value})' data.json
命令分步解释
-n:禁用JQ自动读取输入的默认行为,配合inputs命令逐行处理JSON Lines格式的数据。reduce inputs as $item ({}; ...):遍历每一行输入数据,以空对象{}作为初始累积容器,对每个条目进行处理。.[$item.id] += $item.count:以当前条目的id作为键,将对应的count值累加到容器中该键对应的值上(首次遇到该id时自动创建键并赋值)。| to_entries:将累积得到的键值对对象转换为条目数组,格式为[{"key": "id值", "value": 求和后的count}, ...]。| map({id: .key, count: .value}):将每个条目映射为你需要的最终JSON结构,把key重命名为id,value重命名为count。
示例验证
执行命令后,针对你提供的输入数据,输出结果将与预期完全一致:
{"id":"123","count":65} {"id":"456","count":77} {"id":"789","count":44}
内容的提问来源于stack exchange,提问作者user6903701
相关产品推荐
相关产品推荐

