GREP(1) — UNIX Programmer’s Manual
名称
grep, egrep, fgrep − ファイルをサーチしてパターンを探す
形式
grep [ option ] ... expression [ file ] ... egrep [ option ] ... [ expression ] [ file ] ... fgrep [ option ] ... [ strings ] [ file ]
解説
grep ファミリのコマンドは file (デフォルトは標準入力)をサーチし、パターンに一致する行を探し出します。 通常、見つけ出された各行は標準出力にコピーされます。 grep で使用できるパターンは限定された ex(1) スタイルの正規表現であり、 grep はコンパクトな非決定性アルゴリズムを使用しています。 egrep で使用できるパターンは完全な正規表現です。 egrep は高速な決定性アルゴリズムを使用していますが、 指数関数的なスペースを必要とすることもあります。 fgrep で使用できるパターンは固定された文字列 strings であり、 アルゴリズムは高速でコンパクトです。 次のオプションが使用できます。
−v 一致した行を除くすべての行が表示されます。
−x 行全体がそっくり一致したものだけが表示されます (fgrep だけ)。
−c 一致した行数だけが表示されます。
−l 一致した行があるファイルの名前だけが、(1つずつ)改行で区切られて表示されます。
−n 各行の前に行番号が付けられます。
−b 各行の前にその行が見つかったブロック番号が付けられます。 これは、文脈によってディスクブロック番号を見つける時に便利です。
−i 比較を行う時に大文字と小文字の別が無視されます。 つまり、大文字も小文字も同じであると見なされます。 これは grep と fgrep にだけ適用されます。
−s サイレントモード。 (エラーメッセージ以外は)何も表示されません。 これは、エラー状態をチェックする場合に有用です。
−w 正規表現が、あたかも‘\<’と‘\>’とで囲まれているかのように (ex(1) 参照)、 1個のワードとしてサーチされます(grep だけ)。
−e expression
単一の正規表現の引数と同じですが、 正規表現が−で始まっている場合に便利です。
−f file 正規表現 (egrep) または文字列のリスト (fgrep) が file から読み取られます。 いずれの場合にも、複数の入力ファイルがある場合は、 ファイル名が出力されます。 $ ∗ [ ^ | ( ) および \ を 正規表現中 に使用するときは注意してください。 これらの文字は、シェルにとっても意味があるからです。 正規表現 引数全体を、シングルクォート´´ で囲むのが一番確実です。 fgrep は、(復帰改行で分離された) strings のうちの 1つを含む行を探します。 egrep は、拡張された正規表現を受け付けます。 以下の説明中の‘文字’には、改行は含まれません。
改行以外の 1文字があとに付けられた \ は、その文字と一致します。
文字 ^ は、行の先頭と一致します。 文字 $ は、行の終りと一致します。
. (ピリオド)は、どの文字とも一致します。
特別な意味を持たない文字は、その文字と一致します。
大かっこ [] で囲まれた文字列はその文字列中の任意の 1文字と一致します。 文字コードの範囲は ‘a−z0−9’ のように省略して表すことができます。 ‘]’ は文字列の先頭文字としてだけ使用できます。 定数 ‘−’ は範囲指示子と間違われない箇所に置かなければなりません。
∗(アスタリスク)があとに付けられた正規表現は 0 または それ以上のその正規表現に一致します。 +(プラス)があとに付けられた正規表現は 1 つまたは複数のその正規表現に一致します。 ?(疑問符)があとに付けられた正規表現は 0 または 1 つのその正規表現に一致します。
連結された 2つの正規表現は 最初の正規表現の一致するもののあとに
2 番目の正規表現の一致するものが続いているものに一致します。
| または改行で区切られた2つの正規表現は どちらかの正規表現に一致するものに一致します。
かっこで囲まれた 1つの正規表現は その正規表現の一致するものに一致します。 同じかっこレベルでの演算子の優先順位は、 [ ]、 ∗+?、 連結、 |、 そして改行の順です。 理想的には、 grep 1つだけですべてのことができればよいのですが、 処理が速く、かつ性能の優れたアルゴリズムが分かっていません。
関連事項
診断
終了ステータスは一致するものがあった場合は 0 、 一致するものがなかった場合は 1 、 文法エラーがあった場合またはファイルがアクセスできなかった場合は 2 です。
バグ
1行の長さは、256 文字までに制限されています。 これより長い行は切り捨てられます。
NEWS-OSRelease 3.3