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