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



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

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

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

最新更新