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

如何在Bash中使用jq统计最新状态为Done的唯一用户数量

实现方案

使用jq工具可以直接完成该统计需求,无需额外复杂脚本。

命令示例

本地JSON文件统计

jq 'group_by(.user) | map(last | select(.status == "Done")) | length' 你的数据文件.json

直接对接API统计

如果是直接调用API获取数据,可以直接把curl结果通过管道传给jq:

curl 你的API地址 | jq 'group_by(.user) | map(last | select(.status == "Done")) | length'

命令逻辑说明

  • group_by(.user):将所有记录按照user字段分组,同一个用户的所有记录会被归到同一个子数组中。由于你提供的原始数据已经是按时间正序排列,所以每个用户对应的子数组也默认是按时间从早到晚排序的。
  • map(last | select(.status == "Done")):遍历每个用户的分组,先取每个分组的最后一条记录(即该用户的最新记录),再筛选出status为Done的条目。
  • length:统计符合条件的条目总数,输出结果就是你需要的统计值。

兼容无固定顺序的原始数据

如果后续遇到原始数据没有按时间排序的场景,可以额外加一步排序逻辑,保证取到的是每个用户的最新记录:

jq 'sort_by(.date) | group_by(.user) | map(last | select(.status == "Done")) | length' 你的数据文件.json

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 02:24:03