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

如何用jq将多行JSON转为无引号CSV?无需指定所有键

解决JSON行转无引号CSV的问题

嘿,针对你这个需求,我有几个实用的方案,既能避免手动指定键,又能去掉不必要的双引号,咱们来看:

方案1:纯jq实现(最推荐)

不用依赖额外工具,直接让jq输出不带引号的逗号分隔内容就行。把你原来的@csv换成join(",")——因为@csv是按照CSV规范自动添加引号的,而join就是简单的字符串拼接:

jq -r '[.[]] | join(",")' in.txt > out.txt

解释一下:

  • [.[]]:把当前JSON对象的所有值提取出来,组成一个数组(不管有多少个键,都会自动全部提取)
  • join(","):把数组里的元素用逗号直接连接,输出就是v1,v2,...这种格式,完全没有双引号

方案2:jq + sed(适合需要保留CSV规范但临时去引号的场景)

如果你还是想用@csv生成标准CSV,再去掉引号,也可以用sed精准替换。不过要注意:如果你的JSON值本身包含双引号或者逗号,这种方法可能会破坏内容,但如果确定值里没有这些特殊字符,就可以用:

jq -r '[.[]] | @csv' in.txt | sed 's/"//g' > out.txt

这里sed 's/"//g'是全局替换掉所有双引号,简单直接。

补充说明

如果你的JSON值里可能存在逗号、双引号这类CSV特殊字符,其实保留双引号才是符合CSV规范的,这样后续用工具解析CSV时才不会出错。但如果你的场景里确定值都是纯文本、没有特殊字符,那上面的方案就完全适用啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:10:31