[jq] limit で条件に一致する要素の出力件数を制限する
作成日: 2026年10月24日
jq の limit を使用すると、フィルターが出力する値の数を制限できます。条件に一致する要素のうち、先頭の数件だけを取り出したい場合などに利用できます。
下記の例では、配列から20以上の数値を先頭2件まで出力しています。
printf '%s\n' '[10,20,30,40]' | jq 'limit(2; .[] | select(. >= 20))'
実行結果は下記のとおりです。
20
30
limit(件数; フィルター) の第1引数に出力する最大件数を指定し、第2引数に値を取り出すフィルターを指定します。この例では、.[] で取り出した各要素を select(. >= 20) で絞り込んだ後の件数を制限しています。
条件に一致する要素が指定件数より少ない場合は、見つかった要素だけを出力します。
結果を配列にまとめる
limit の出力を [] で囲むと、取り出した値を1つの配列にまとめることができます。
printf '%s\n' '[10,20,30,40]' | jq '[limit(2; .[] | select(. >= 20))]'
実行結果は下記のとおりです。
[
20,
30
]