[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つの組み合わせの配列を要素として持つ配列になっています。