[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 になっています。

参考

jq