如何使用Jq输出CSV等带分隔符的文本供其他CLI工具使用
jq输出带分隔符格式的实现方法
用jq处理JSON数据后,要输出为CSV/TSV这类带分隔符的格式供其他CLI工具读取非常简单,直接用jq内置的数组拼接+join函数或者@csv格式化器即可实现。
对应示例的具体实现命令
针对你给出的输入JSON,要输出a、c两列的逗号分隔格式,执行以下命令即可得到匹配的结果:
jq -r '["a","c"], (.[] | [.a, .c]) | join(",")' 你的数据文件路径.json
命令说明
-r参数:开启原始输出模式,输出的内容不会被自动包裹双引号,也不会转义特殊字符,输出结果可以直接被awk、cut、bash内置read命令读取- jq表达式逻辑:
- 先构造
["a","c"]数组作为表头行 - 遍历输入JSON数组的每一个对象,提取每个对象的
a、c字段值拼成新数组 - 所有数组统一用
join(",")拼接为逗号分隔的字符串
- 先构造
扩展用法
- 自定义分隔符:如果需要制表符分隔(更适合CLI工具处理,避免字段内容含逗号导致解析错误),把
join(",")替换为join("\t")即可输出TSV格式 - 字段含特殊字符的场景:如果你的字段值可能包含分隔符、换行符、双引号等特殊字符,建议使用jq内置的
@csv格式化器,它会自动按照标准CSV规则转义字段,命令如下:
jq -r '["a","c"], (.[] | [.a, .c]) | @csv' 你的数据文件路径.json
内容的提问来源于stack exchange,提问作者shadowtalker
相关产品推荐
相关产品推荐

