使用jq将JSON {“k1”:“v1”,“k2”:“v2”}转换为CSV:v1,v2

时间:2018-05-04 21:41:00

标签: json csv export-to-csv jq

我有一个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

1 个答案:

答案 0 :(得分:2)

如果您确定输入数据不包含,,则可以使用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