首页 > 解决方案 > jq - 成对转换数组

问题描述

我有一个这样的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

我无法理解如何使用两个元素进行迭代。对此的任何帮助将不胜感激

标签: arraysjsonselectjq

解决方案


使用生成偶数索引range并将它们用于对数组进行切片:

range(0;length;2) as $i | .[$i:$i+2] | @csv

请注意,-r生成正确的 CSV 需要该选项。

.[$i:$i+2]生成一个长度为 2 的子数组,包含从 index $i(包括)到 index $i+2(不包括)的元素。


推荐阅读