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

如何在jq中用外层now值减去内层aircraft的seen_pos值

解决jq访问外层now字段计算seen_pos的问题

核心思路

在jq中处理嵌套数组时,先把外层的now字段存入一个变量,之后遍历aircraft数组时直接引用该变量进行计算,替换原seen_pos字段,再结合原有筛选逻辑输出CSV。

具体实现示例

假设你原本的jq筛选输出逻辑类似这样:

.aircraft[] | select(...) | [.field1, .seen_pos, .field3] | @csv

修改后可调整为:

.now as $now | .aircraft[] | select(...) | .seen_pos = ($now - .seen_pos) | [.field1, .seen_pos, .field3] | @csv

关键细节说明

  • .now as $now:将根节点下的now字段值绑定到变量$now,后续处理数组元素时可直接调用
  • .seen_pos = ($now - .seen_pos):把当前aircraft条目的seen_pos替换为外层now减去原seen_pos的结果
  • 保留你原有的select(...)筛选逻辑,只需将变量绑定语句放在最开头

完整测试示例

假设test.json内容如下:

{
  "now": 1620000000,
  "aircraft": [
    {"id": 1, "seen_pos": 1619999000, "model": "A320"},
    {"id": 2, "seen_pos": 1619998000, "model": "B737"},
    {"id": 3, "seen_pos": 1620000500, "model": "C919"}
  ]
}

执行命令:

jq -r '.now as $now | .aircraft[] | select(.model != "C919") | .seen_pos = ($now - .seen_pos) | [.id, .seen_pos, .model] | @csv' test.json

输出结果:

1,1000,"A320"
2,2000,"B737"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 19:52:06