[jq] transpose で二次元配列の行と列を入れ替える
作成日: 2026年10月24日
jq の transpose を使用すると、二次元配列の行と列を入れ替えることができます。行ごとに並んでいるデータを、列ごとの配列にまとめたい場合などに利用できます。
下記の例では、名前と点数を持つ行を、名前の配列と点数の配列に変換しています。
printf '%s\n' '[["Taro",80],["Hanako",95]]' | jq 'transpose'
実行結果は下記のとおりです。
[
[
"Taro",
"Hanako"
],
[
80,
95
]
]
各行の要素数が異なる場合は、足りない要素が null で補われます。
printf '%s\n' '[[1,2],[3]]' | jq 'transpose'
実行結果は下記のとおりです。
[
[
1,
3
],
[
2,
null
]
]
入力には、配列を要素として持つ配列を渡します。この例では、2行目に2列目の値がないため、入れ替え後の2行目の2番目の要素が null になっています。