next up previous contents
Next: オプション Up: 文字列の検索 grep/egrep/fgrep Previous: 形式

解説

[]

grep ファミリは指定したファイル(省略時もしくは-が与えられる と標準入力)から、パターンに一致した行を検索します。通常、一致した行は標 準出力に渡されます。

grep は3つの変形があり,次のオプションでコントロールされます。

-G 使用するパターンは、ex (1) で使用されるものと同様の制限付き正規表現です。 これは、コンパクトでかつ非決定性アルゴリズムを使用しています。
-E 真の正規表現です。これは、高速決定性アルゴリズムを 使用します。
-F 単に文字列として解釈します。
grep で使用するパターンは、 ex (1) で使用されるものと同様の制限付き正規表現です。 これは、コンパクトでかつ非決定性アルゴリズムを使用しています。 egrep で使用するパターンは、真の正規表現です。これは、高速決定性アルゴリズムを 使用しますが、場合によっては、使用するメモリが指数関数的に大きくなるという 欠点があります。 fgrep で使用できるパターンは、書かれたままの文字列で、実行速度が速くコンパクトです。

全ての命令の実行の際には、 入力されたファイルが1つ以上の場合にはファイル名が示され ます。 $ * [ ^ | ( ) \expression 中に使用する場合には、これらの文字がシェルに対し て特別の意味を持っているため注意が必要です。 最も確実にこの問題を避けるには expression 全体をシングルコーテーションでくくります。

fgrep は改行によって区切られた複数の文字列のうち1つでも含んだ行を検索します。

egrep は拡張された正規表現を受け付けます。 ただし、どの正規表現も改行とは一致しません。

\ の次の文字はその文字自身と一致します。


^ は行の先頭と一致します。


$ は行の終わりと一致します。


ピリオド(.)は任意の1文字と一致します。


任意の1文字は特殊な意味を持たない限りその文字自身と一致します。


かぎかっこ [ ] でくくられた文字列はそのうちの任意の1文字と一致します。 ASCII文字コードの並びはかっこ内に ``a-z0-9'' と 省略して書くことができます。 右かぎかっこ ] はかっこ内の文字列の先頭でない限りは右かぎかっこそのもの の意味には取り扱われません。-(マイナス)を文字自身の意味に用いる 場合は範囲指定の記号 として意味を持たないように記述する必要があります。


* (アスタリスク)が後に続く正規表現は、 その正規表現の0回以上の繰り返しと一致します。


$+$(プラス)が続く場合は1回以上の繰り返しと一致します。


? (クエスチョンマーク)が続く場合は正規表現と0回または1回の一致を意 味します。


2つの正規表現が続いて指定されている場合は、正規表現が、書かれた順序で 一致することを意味します。


| または改行よって区切られた2つの正規表現はそのどちらか一方と一 致します。


丸かっこ () でくくられた正規表現はその正規表現をまとまりとして扱うことに なります。

一連の正規表現における動作の優先順位は [ ],*+? ,並び,|,改行です。 理想的には grep のみですべてを処理しうるべきなのですが、残念ながら時間と領域とのトレードオフで、 1つのアルゴリズムで両方を満足させるものはまだ完成の域に達してはいません。


Kishimoto Ken
平成20年3月1日