[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
]

参考

jq