#arrays #json #select #jq
#массивы #json #выберите #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
Я не могу понять, как использовать два элемента для итерации.
Любая помощь в этом была бы очень признательна
Ответ №1:
Сгенерируйте четные индексы с помощью range
и используйте их для нарезки массива:
range(0;length;2) as $i | .[$i:$i 2] | @csv
Обратите внимание, что -r
для создания правильного CSV требуется эта опция.
.[$i:$i 2]
генерирует подмассив длиной 2, содержащий элементы от index $i
(включительно) до index $i 2
(исключительный).