You need to enable JavaScript to run this app. 如何使用jq带条件筛选导出CSV?解决对象无法转CSV报错
优惠活动
大模型
产品
解决方案
定价
更多

如何使用jq带条件筛选导出CSV?解决对象无法转CSV报错

报错根因

jq的@csv内置格式化函数,仅支持对数组类型的值完成CSV格式化。原命令在select筛选完成后输出的是单个JSON对象,不符合函数入参要求,因此触发object cannot be csv-formatted, only array报错。

可直接落地的修正命令

基础版(仅输出符合筛选条件的女生记录,无表头)

cat target.json | jq -r '.[] | select(.sex == "female") | [.name, .age, .sex] | @csv'

和原命令相比,核心修正点:

  • 新增-r参数:输出原始字符串,消除jq默认附带的多余转义引号,导出的内容可直接被Excel、WPS等表格软件正常识别
  • 对筛选出的JSON对象,通过[.name, .age, .sex]将字段按目标列顺序封装为数组,满足@csv的入参要求
  • 匹配规则将原endswith("female")替换为== "female":当前源数据中sex为固定枚举值,精确匹配逻辑更简洁;如果后续存在类似"female-少年班"这类需要后缀匹配的场景,可保留原endswith写法。

执行该命令后的输出为:

"Kasia","5","female"

增强版(带CSV表头,可直接落盘导出文件)

如果需要导出的CSV第一行包含列名(name、age、sex),并直接保存为本地文件,可执行以下命令:

cat target.json | jq -r '["name", "age", "sex"], (.[] | select(.sex == "female") | [.name, .age, .sex]) | @csv' > female_records.csv

执行完成后会在当前目录生成female_records.csv文件,文件内容为:

"name","age","sex"
"Kasia","5","female"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 12:36:03