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

Using jq to convert JSON {"k1":"v1","k2":"v2"} into CSV: v1,v2

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

到目前为止我找到了这个命令:

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

生成包含以下行的输出文件:"v1","v2"。我怎样才能去掉双引号?

更新: 我可以使用 sed 删除双引号,如下所示,但我仍然有兴趣使用 jq:

找到解决方案

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

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