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

如何使用jq过滤JSON指定字段并生成CSV文件?

解决方法:提取指定字段生成CSV

针对你的需求,直接指定要提取的name和version字段即可,无需动态遍历所有键,以下是最简可行命令:

jq -r '["name", "version"], (.[] | [.name, .version]) | @csv'

命令说明:

  • ["name", "version"]:生成CSV的表头行
  • (.[] | [.name, .version]):遍历输入的JSON数组,每个对象提取name和version字段组成数组
  • | @csv:将数组格式化为CSV字符串
  • -r:输出原始文本(避免JSON字符串的引号包裹)

你的原命令问题分析:

  1. 你先通过map(keys) | add | unique获取了所有字段(包含不需要的env)作为列集合$cols,但后续构建的$row只保留了name和version,导致$cols中的env字段在$row中找不到对应值,会生成空列
  2. 外层的map(.[] | ...)属于冗余逻辑——输入本身是数组,.[]已经在遍历元素,再套map会重复处理,导致逻辑混乱

如果需要灵活指定字段(比如后续要调整提取的字段),可以用参数传入字段列表:

jq -r --argjson fields '["name", "version"]' '$fields, (.[] | [$fields[] | .[$_]]) | @csv'

这样只需修改--argjson后的字段数组,无需改动jq核心脚本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:22:07