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

jq:如何在单语句中赋值变量并用于select过滤?

解决jq单次调用中引用同JSON内字段的筛选问题

你之前的嵌套jq写法失效,是因为内层jq -r '.city.sunrise'没有接收到JSON输入(curl的输出全传给了外层jq),导致$sunrise变量为空,筛选条件永远不成立。

不需要用--arg传参,直接在jq内部引用同一份JSON里的字段即可,一次调用就能完成筛选:

核心命令

jq -r '(.city.sunrise) as $sunrise | .list[] | select(.dt > $sunrise) | .clouds.all'

完整管道(含awk计算平均值)

curl [你的API接口地址] | jq -r '(.city.sunrise) as $sunrise | .list[] | select(.dt > $sunrise) | .clouds.all' | awk '{sum+=$1; count++} END {print sum/count}'

逻辑说明

  • 先把JSON中的.city.sunrise值存入jq内部变量$sunrise
  • 遍历.list数组,筛选出.dt大于$sunrise的元素
  • 提取符合条件元素的.clouds.all字段输出,再传给awk计算平均值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 20:25:21