egrep コマンド

目的

ファイルの内容をパターンで検索します。

構文

egrep [ -h ] [ -i ] [ -p [ Separator ] ] [ -s ] [ -v ] [ -w ] [ -x ] [ -y ] [ [ -b ] [ -n ] | [ -c | -l | -q ] ] { { -e Pattern | -fStringFile } ... | Pattern } [ File ... ]

説明

egrep コマンドは入力ファイル (デフォルトは標準入力) を検索して、Pattern パラメーターで指定したパターンに一致する行を探します。また、egrep コマンドには次の規則が適用されます。

改行文字は、正規表現で一致させることはできません。

演算子の優先順位は、[、]、*、?、+、連結、|、改行文字の順です。

注: egrep コマンドは、 -E フラグを指定した grep コマンドと同じです。ただし、エラー・メッセージと使用方法メッセージが異なり、 -s フラグの機能も異なります。

複数の File パラメーターを指定した場合、 egrep コマンドは一致する行を含むファイルを表示します。シェルに対して特別な意味を持つ文字 ($、*、[、|、^、(、)、 ¥) は、Pattern パラメーター内では引用符で囲まなければなりません。 Pattern パラメーターが単純な文字列でない場合、通常はパターン全体を単一引用符で囲まなければなりません。 [a-z] のような式では、負符号は該当する照合シーケンスから見た範囲を示します。照合シーケンスは文字範囲内で使用する等価クラスを定義できます。これは、高速の決定論的なアルゴリズムを使用しますが、このアルゴリズムは指数のスペースを必要とすることがあります。

注:
  1. 各行は 2048 バイト以内に制限されています。
  2. 現在、パラグラフ (-p フラグの指定) の長さは、5000 文字に限定されています。
  3. 予測できない結果を生ずるので、grep コマンドをスペシャル・ファイル上で実行するのは避けてください。
  4. 入力行には、NULL 文字を使用しないでください。
  5. 入力ファイルは、改行文字で終らなければなりません。
  6. 複数のフラグを同時に指定できますが、フラグの中には他のフラグをオーバーライドしてしまうものがあります。たとえば、-l-n を同時に指定すると、ファイル名だけが標準出力に書き出されます。

フラグ

-b 各行の前に、その行が見つかったブロック番号を付けます。このフラグを使用すると、ディスク・ブロック番号をコンテキストで見つけるときに便利です。 -b フラグは、標準入力またはパイプからの入力と一緒には使用できません。
-c 一致した行の数のみを表示します。
-e Pattern パターン を指定します。これは、単純パターン と同じ働きをしますが、パターン が - (ハイフン) で始まる場合に便利です。
-f StringFile 文字列を含むファイルを指定します。
-h 複数ファイルの処理中に、ファイル名を抑止します。
-i 比較を行うときに、大文字と小文字の区別を無視します。
-l 一致している行のファイルの名前を表示します (1 回)。各ファイル名は、改行文字で区切られます。標準入力を検索した場合は、パス名 "(StandardInput)" が戻されます。
-n 各行の前に、ファイル内におけるその行の相対行番号を付けます。
-p[Separator] 一致する行を含むパラグラフ全体を表示します。パラグラフは、Separator パラメーターで指定された、パラグラフ・セパレーターで区切られます。パラグラフ・セパレーターは検索パターンと同じ書式のパターンです。パラグラフ・セパレーターを含んでいる行は、セパレーターとしてのみ使用され、出力には含まれません。デフォルトのパラグラフ・セパレーターはブランク行となります。
-q 行の一致に関係なく、すべての出力が標準出力に書き出されないようにします。入力行を選択すると、終了して状況 0 を戻します。
-s エラー・メッセージだけを表示します。これは、状況を検査するのに便利です。
-v 指定されたパターンと一致する行を除くすべての行を表示します。
-w ワードの検索を行います。
-x 指定したパターンに正確に一致し、余分の文字がない行を表示します。
-y 比較を行うときに、大文字と小文字の区別を無視します。

戻りコード

このコマンドは次の終了値を戻します。

0 一致が見つかりました。
1 一致が見つかりませんでした。
>1 構文エラーが見つかったか、(一致が見つかったとしても) ファイルにアクセスできませんでした。

パターン・マッチング文字 +、?、|、(、) を含む拡張パターンを使用するには、次のように入力します。

  egrep "¥(([A-z]+|[0-9]+)¥)" my.txt

これは、小括弧内の文字や小括弧内の数字を含む行を表示しますが、小括弧で囲まれた文字と数字の組み合わせは表示しません。 (y)(783902) には一致しますが、 (alpha19c) には一致しません。

注: egrep コマンドを使用する際、「¥ (」(左括弧があとに続く円記号またはバックスラッシュ) または「¥ )」(右括弧があとに続く円記号またはバックスラッシュ) はテキストとしての括弧を示しますが、「(」(左括弧) と「)」(右括弧) は、パターンの部分をグループ化する特別な文字です。 grep コマンドを使用するときは、逆になります。

関連情報

fgrep コマンド、grep コマンド