簡體   English   中英

jq - 轉換成對的數組

[英]jq - convert an array in a pair

我有一個像這樣的 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

我無法理解如何采用兩個元素進行迭代。 對此的任何幫助將不勝感激

使用range生成偶數索引,並將它們用於切片數組:

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

請注意, -r選項對於生成正確的CSV是必需的。

.[$i:$i+2]生成一個長度為2的子數組,其中包含從索引$i (含)到索引$i+2 (不含)的元素。

或者,有一個標准的unix實用程序( paste ),它可以輕松地連接輸出行-您只需要每行轉儲一個JSON數組值(我將使用jtc完成此操作,但同樣,任何JSON工具都可以完成這樣的瑣碎任務):

bash $ echo '["abc", 0, "cd", 1]' | jtc -w[:] | paste -d',' - -
"abc",0
"cd",1
bash $ 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM