如何在 JQ 中连接两个数组

how to concat two arrays in jq

提问人:learning-man 提问时间:10/10/2023 更新时间:10/10/2023 访问量:63

问:

我有以下json:

echo '{"a": [1, 3, 5, 7, 9 ], "b": [2, 4, 6, 8, 10 ]}' | jq                                                                                                                                                    
{
  "a": [
    1,
    3,
    5,
    7,
    9
  ],
  "b": [
    2,
    4,
    6,
    8,
    10
  ]
}

我想得到以下 csv:

1,2
3,4
5,6
7,8
9,10

jq 怎么可能?

JSON 解析 JQ

评论

0赞 Raky 10/10/2023
您是否在寻找除此????之外的其他东西echo '{"a": [1, 3, 5, 7, 9 ], "b": [2, 4, 6, 8, 10 ]}' | jq '[.a, .b] | transpose | @csv'
1赞 pmf 10/10/2023
@Raky 不能在数组的数组上使用。你至少必须先遍历外部数组。此外,您可能希望使用标志来摆脱 JSON 编码。@csv-r

答:

3赞 pmf 10/10/2023 #1

您可以使用 .它通过接受数组数组来“旋转”表。遍历旋转的行,并用于生成 CSV:transpose@csv

jq -r '[.a, .b] | transpose[] | @csv'
1,2
3,4
5,6
7,8
9,10

演示

注意:如果数组的长度不相等,将填充 s,从而导致 CSV 的空项。transposenull