首页 > 解决方案 > 使用 jq 将 JSON {"k1":"v1","k2":"v2"} 转换为 CSV: v1,v2

问题描述

我有一个带有类似行的 JSON 文件in.txt{"k1":"v1","k2":"v2"}我想从中创建一个out.txt带有行的 CSV 文件v1,v2。JSON 文件可能包含超过 10 个键/值对,因此我更喜欢不需要在输入命令中指定每个键的解决方案。

到目前为止,我发现了这个命令:

jq -r '[.[]] | @csv' in.txt > out.txt

它产生带有行的输出文件:"v1","v2". 我怎样才能摆脱双引号?

更新:我可以使用以下方法删除双引号sed,但我仍然有兴趣使用 jq 找到解决方案:

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

标签: jsoncsvexport-to-csvjq

解决方案


如果您确定输入数据不包含 a,您可以使用join(",").

假设你有这个输入文件:

{"k1":"v1","k2":"v2"}
{"k1":"v3","k2":"v4"}
{"k1":"v5","k2":"v6"}

你可以join这样使用:

jq -r 'values|join(",")' input.file

输出:

v1,v2
v3,v4
v5,v6

推荐阅读