[jq] index と rindex で配列内の値の位置を取得する
作成日: 2026年10月25日
jq の index を使用すると、配列内で指定した値が最初に現れる位置を取得できます。位置は先頭を 0 として数えます。
下記の例では、それぞれの配列から数値の 20 が最初に現れる位置を取得しています。
printf '%s\n' '[10,20,30,20]' '[20,10]' '[10,30]' | jq 'index(20)'
実行結果は下記のとおりです。
1
0
null
同じ値が複数ある場合、index は最初の位置を返します。指定した値が見つからない場合は null を返します。
最後に現れる位置を取得する
rindex を使用すると、指定した値が最後に現れる位置を取得できます。
printf '%s\n' '[10,20,30,20]' | jq 'rindex(20)'
実行結果は下記のとおりです。
3
この配列では 20 が位置 1 と 3 にあるため、index(20) は 1、rindex(20) は 3 を返します。rindex も、指定した値が見つからない場合は null を返します。