[jq] combinations で複数の配列の組み合わせを生成する

作成日: 2026年10月27日

jq の combinations を使用すると、複数の配列からそれぞれ1つずつ要素を選び、すべての組み合わせを生成できます。色とサイズのように、複数の項目の候補を組み合わせたい場合などに利用できます。

入力には、候補の配列を要素として持つ配列を渡します。下記の例では、2色と2サイズから4通りの組み合わせを生成しています。

printf '%s\n' '[["red","blue"],["S","M"]]' | jq -c 'combinations'

実行結果は下記のとおりです。

["red","S"]
["red","M"]
["blue","S"]
["blue","M"]

各組み合わせは、それぞれの配列から選んだ値を並べた配列として出力されます。この例では、-c オプションで各配列を1行に表示しています。

結果を1つの配列にまとめる

combinations の出力を [] で囲むと、生成した組み合わせを1つの配列にまとめられます。

printf '%s\n' '[["red","blue"],["S","M"]]' | jq '[combinations]'

実行結果は下記のとおりです。

[
  [
    "red",
    "S"
  ],
  [
    "red",
    "M"
  ],
  [
    "blue",
    "S"
  ],
  [
    "blue",
    "M"
  ]
]

この結果は、4つの組み合わせの配列を要素として持つ配列になっています。

参考

jq