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

如何使用jq获取符合筛选条件的嵌套字段最小值对应对象ID

jq处理gzip压缩JSON流实现需求的方案

你的文件是gzip压缩的多行JSON对象流,无需提前解压,直接通过管道组合命令即可完成筛选,完整可直接执行的命令如下:

zcat myfile.gz | jq -r 'select(.type == "S" and .count > 20) | {id: .id, food_remaining: .friday.remainingMoney.categories.FOOD}' | jq -s 'min_by(.food_remaining).id'

命令逻辑拆解

  • zcat myfile.gz:直接读取gzip压缩文件的内容,不需要解压生成临时文件。
  • 第一段jq逻辑:逐行遍历JSON流,先过滤掉不满足type字段值为S、count字段值大于20的对象,仅提取后续需要的id、周五FOOD分类剩余金额两个字段,减少冗余数据处理。
  • 第二段jq逻辑:-s参数会把所有过滤后传入的JSON对象整合成一个数组,通过min_by找到剩余金额最小的记录,最终输出该记录对应的id。
  • -r参数表示输出原始字符串格式,返回的id不会带JSON字符串的额外引号,可以直接使用。

特殊场景适配

如果存在多个对象的周五FOOD剩余金额并列最小值,上述命令默认返回第一个匹配的id;如果需要返回所有满足最小值条件的id,可以替换为如下命令:

zcat myfile.gz | jq -r 'select(.type == "S" and .count > 20) | {id: .id, food_remaining: .friday.remainingMoney.categories.FOOD}' | jq -s 'min_val = map(.food_remaining) | min | map(select(.food_remaining == min_val).id)[]'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:45:33