The fastest grep in the west (we hope).

GNU grepコマンドの最新版となる「grep 2.17」が公開された。GNU grepコマンドはテキストデータから指定したパターンに一致する行を取り出すといった用途に使われることが多いコマンドで、UNIX系のオペレーティングシステムで使われる頻度が高いコマンドのひとつ。grepコマンドには大文字と小文字を個別せずに一致させるという指定を意味する「-i」オプションを提供しているが、「grep 2.17」ではこの部分の処理を変更し、場合によっては10倍を超える高速化に成功したと説明がある。

現在ではLC_ALL=Cの状態ではなくマルチバイトロケールが設定された状態で使われることがほとんど。英語のみの使用であっても環境変数LANGにはCではなくen_US.UTF-8を指定するなどマルチバイトロケールが設定された状態で使われていることが多い。こうした状態で「-i」を使うと、マルチロケールに存在するごくわずかなケースを処理するために「-i」の処理そのものがかなり負荷の高い処理になる。

「grep 2.17」では処理そのものを変更するのではなく、「-i」オプションを使わない表記に変換できる場合には、そちらの表記に変換してから処理を実施することで高速化を実現している。たとえば「grep -i foobar」といった指定で実行されているのであれば「grep '[fF][oO][oO][bB][aA][rR]'」のように変換してから実行することで高速化を実現している。また、マルチバイト回りでほかにも処理の高速化などが実施されている。