【问题标题】:Using jq to convert JSON {"k1":"v1","k2":"v2"} into CSV: v1,v2使用 jq 将 JSON {"k1":"v1","k2":"v2"} 转换为 CSV: v1,v2
【发布时间】:2018-10-15 10:35:43
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 给定一个合适的 CSV 解析器,"v1","v2"v1,v2 是等价的。你为什么在乎?

标签: json csv export-to-csv jq


【解决方案1】:

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

【讨论】:

  • 它不起作用。但可能是因为最初我写了问题{"k1","v1","k2","v2"},而实际上它是{"k1":"v1","k2":"v2"}。很抱歉
  • k.知道这一点很重要。时刻
  • 谢谢!这行得通。是的,我确定没有 , 内部值
猜你喜欢
  • 2012-02-03
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-31
  • 2021-11-13
相关资源
最近更新 更多