我有一个像这样的json数组:
["abc", 0, "cd", 1]
我正在努力将其转换为csv:
"abc", 0
"cd", 1
似乎我找不到解决方案,但是我已经尝试过了:
jq '[ "abc","def", "cd", "nc"] |
to_entries |
(.[] | select(.key % 2 == 0))as $a, ( .[] | select(.key % 2 != 0) as $b ) |
[$a, $b] '
但这又回到我了
jq: 1 compile error
我无法理解如何将两个元素用于迭代。 对此的任何帮助将不胜感激
答案 0 :(得分:4)
使用range
生成偶数索引并将它们用于切片数组:
range(0;length;2) as $i | .[$i:$i+2] | @csv
请注意,-r
选项是生成正确CSV所必需的。
.[$i:$i+2]
生成长度为2的子数组,其中包含从索引$i
(包括)到索引$i+2
(不包括)的元素。
答案 1 :(得分:0)
或者,有一个标准的unix实用程序(paste
),可以方便地连接输出行-您只需要每行转储JSON数组值(我将使用 {{3} } ,但同样,任何JSON工具都可以满足这样的琐碎任务):
bash $ echo '["abc", 0, "cd", 1]' | jtc -w[:] | paste -d',' - -
"abc",0
"cd",1
bash $