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

如何使用jq处理含重复IP的JSON数据并按IP聚合输出host与id

实现方案

直接使用jq内置的分组能力即可完成需求,不需要额外编写bash循环逻辑,命令如下:

# 假设你的JSON保存在data.json文件中
jq -r 'group_by(.ip)[] | [.[0].ip, (.[] | .host, .id)] | join(" ")' data.json

如果需要从管道读取JSON内容,写法如下:

echo '[{"host":"cat","ip":"192.168.1.1","id":"cherry"},{"host":"dog","ip":"192.168.1.1","id":"apple"},{"host":"cat","ip":"192.168.1.2","id":"banana"}]' | jq -r 'group_by(.ip)[] | [.[0].ip, (.[] | .host, .id)] | join(" ")'

命令说明

  • -r 参数让jq输出原始纯文本,不会给结果字符串添加外层引号
  • group_by(.ip) 会将输入的JSON数组按照ip字段的值分组,相同ip的所有记录会被归到同一个子数组中
  • 遍历每个分组后,先取分组第一条记录的ip作为行首,再遍历分组内所有记录依次取出host、id字段值,把所有值拼接为一个数组后用空格连接为整行输出

以上命令执行后的输出和你预期的效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:36:03