egrep(1) FreeBSD 一般コマンドマニュアル

egrep

前のページ 上に戻る 次のページ

egrep




書式

       grep [options] PATTERN [FILE...]
       grep [options] [-e PATTERN | -f FILE] [FILE...]


解説

       grep は、 FILE で名前を指定された入力ファイル (ファイル が
       指 定されてないか、 file の部分に - が指定された場合は標準
       入力) を読み込み、与えられた PATTERN にマッチする部分を 含
       む行を探します。デフォルト動作では、 grep はマッチした行を
       表示します。

       さらに、2 つのプログラム egrepfgrep を利用可能 で す。
       egrepgrep -E と同じです。 fgrepgrep -F と同じで
       す。 zgrepgrep -Z と同じです。


オプション

       -A NUM, --after-context=NUM
              NUM で指定した行数だけ、パターンにマッチした行の 後
              の行も表示します。

       -a, --text
              バ イナリファイルをテキストファイルであるかのように
              処理します。これは --binary-files=text オプションと
              等価です。

       -B NUM, --before-context=NUM
              NUM  で指定した行数だけ、パターンにマッチした行の前
              の行も表示します。

       -C [NUM], -NUM, --context[=NUM]
              NUM で指定した行数 (デフォルトは 2) だけ、パター ン
              にマッチした行の前後の行も表示します。

       -b, --byte-offset
              各 出力行の前に、入力ファイルの先頭からのバイト単位
              のオフセットを表示します。

       --binary-files=TYPE
              ファイルの最初の数バイトが、ファイルの内容がバイ ナ
              リ ファイルであることを示す場合、ファイルのタイプを
              TYPE であると仮定します。デフォルトで は  TYPEbinary であり、 grep は通常、バイナリファイルの一致
              を示す一行メッセージを表示するか、マッチしない場 合
              にはなにも表示しません。 TYPEwithout-match の場
              合、 grep はバイナリファイルはマッチしないものと 仮
              定 します。これは -I オプションと等価です。 TYPEtext の場合、 grep はバイナリファイルをテキストであ
              る かのように扱います。これは -a オプションと等価で
              す。 警告: grep --binary-files=text はバイナリの ゴ
              ミ を表示する可能性があります。出力先が端末である場
              合で、端末ドライバがこのゴミの一部をコマンドであ る
              レ クトリを黙って読み飛ばします。 ACTIONrecurse
              なら、 grep B>はB>各B>デB>ィB>レB>クB>トB>リB>下B>のB>すB>べB>てB>のB>フB>ァB>イB>ル B>を
              B>再 B>帰B>的B>にB>読B>みB>取B>りB>まB>すB>。これは -r オプションと等価で
              す。

       -E, --extended-regexp
              PATTERN を拡張された正規表現として扱います (下記 参
              照)。

       -e PATTERN, --regexp=PATTERN
              PATTERN をパターンとして指定します。 - で始まるパタ
              ーンを保護するために有効です。

       -F, --fixed-strings
              PATTERN を改行で区切られた固定文字列のリストとし て
              扱 います。その文字列のどれかとマッチするかを調べま
              す。

       -f FILE, --file=FILE
              パターンを FILE から 1 行ごとに読み込みます。 空 の
              ファ イルはパターンを含まないので、何にもマッチしま
              せん。

       -G, --basic-regexp
              PATTERN を基本的な正規表現として扱います ( 下 記 参
              照)。デフォルトです。

       -H, --with-filename
              各々のマッチに対してファイル名を表示します。

       -h, --no-filename
              複 数ファイルを検索した時に、出力の前にファイル名を
              付けることを抑制します。

       --help 簡単なヘルプメッセージを出力します。

       -I     バイナリファイルをマッチするデータを含まないかの よ
              うに処理します。これは --binary-files=without-match
              オプションと等価です。

       -i, --ignore-case
              PATTERN と入力ファイルの双方で、英大文字と小文字 の
              区別をしないようにします。

       -L, --files-without-match
              通 常の出力はせず、このオプションを指定しなかったと
              きに全く出力されない入力ファイルの名前を表 示 し ま
              す。スキャン動作は最初のマッチで終了します。

       -l, --files-with-matches
              通 常の出力はせず、このオプションを指定しなかったと
              きに出力される入力ファイルの名前を表示し ま す。 ス

       -q, --quiet, --silent
              沈黙。通常の出力を抑止します。スキャン動作は最初 の
              マッチで終了します。下記の -s--no-messages オプ
              ションも参照。

       -r, --recursive
              各ディレクトリ下のすべてのファイルを再帰的に読み 取
              ります。これは -d recurse オプションと等価です。

       -s, --no-messages
              指 定されたファイルが存在しないことや読み込みできな
              いことを示すエラーメッセージを抑止します。移植性 に
              関 す る 注:  GNU grep とは異なり、伝統的な grep は
              POSIX.2 に適合していませんでした。なぜなら、伝統 的
              な  grep には -q オプションが無く、 -s オプションは
              GNU grep-q オプションの様に動作したからです。伝
              統 的な grep へ移植可能であることを意図したシェルス
              クリプトは、 -q-s を両方とも使わずに、 出 力 を
              /dev/null へリダイレクトすべきです。

       -U, --binary
              ファ イ ル を バ イナリとして扱います。デフォルトで
              は、MS-DOS と MS-Windows 環境下で grep は、ファイル
              か ら読み取った最初の 32KB の内容を見て、ファイルタ
              イプを推測します。 grep はファイルをテキストファ イ
              ル と判断した場合、オリジナルのファイル内容から ( ^$ が使われている正規表現を正しく動作させるために
              ) CR 文字を取り除きます。 -U を指定すると、この当て
              推量を抑制し、すべてのファイルを読み取ってマッチ 機
              構 へ そ のまま渡します。もしファイルが各行の末尾に
              CR/LF の組みを持つテキストファイルなら、こ の オ プ
              ショ ン は 正規表現を役に立たなくさせることがあるで
              しょう。このオプションは MS-DOS と MS-Windows 以 外
              のプラットフォームでは効果がありません。

       -u, --unix-byte-offsets
              unix 形式のバイト単位オフセットを報告します。このス
              イッチを指定すると grep は、ファイルが unix 形式 の
              テ キストファイル、すなわち、 CR 文字が取り除かれた
              ファイルであるかのごとくにバイト単位オフセットを 報
              告 します。このことは grep を Unix マシンで動作させ
              たのと同じ結果を生成します。このオプションは -b  オ
              プ ショ ンも使用しない限り効果がありません。 MS-DOS
              と MS-Windows 以外のプラットフォームでは効果があ り
              ません。

       -V, --version
              grep のバージョン番号を標準エラー出力に表示します。
              バグレポートには、この番号を付記してください (下 記
              参照)。

       -v, --invert-match

       -Z, --null
              通常ファイル名の後に続く文字の代わり に バ イ ト  0
              (ASCII NUL 文字) を出力します。例えば、 grep -lZ は
              各ファイル名の後に、通常の newline ではなくバイト 0
              を 出力します。このオプションを指定すると、 newline
              等の例外的な文字を含むファイル名に直面した場合で も
              出 力 が 明 白 に な り ます。このオプションを find
              -print0, perl -0, sort -z, xargs -0 等のコマンド と
              共 に 使 用すれば、任意のファイル名を処理できます。
              ファイル名が newline 文字を含んでいても処理可 能 で
              す。

       -Z, --decompress
              検 索を開始する前に入力データを伸長します。このオプ
              ションは zlib ライブラリと共にコンパイルした場合 の
              み使用可能です。


正規表現

       正規表現は、文字列の集合を表現するパターンの事です。数式表
       現と同様に、より小さな表現を組み合わせるさまざまな演算子を
       用いる事で、正規表現を組み立てます。

       grep は、「基本」正規表現と「拡張」正規表現の 2 種類の正規
       表現文法を扱う事ができます。 GNU grep では、どちらの正規表
       現文法も機能的な違いはありません。他の実装では、基本正規表
       現は拡張正規表現より能力が低くなっています。ここでは、拡張
       正規表現について説明します。基本正規表現との違いは、その後
       に説明します。

       正規表現の基本単位は、1 文字にマッチする正規表現です。レタ
       ーと数字を含む多くの文字は、それ自身にマッチする正規表現で
       す。また、特殊な意味を持つメタ文字も、その文字の前にバック
       スラッシュを付けると、その本来の文字にマッチするようになり
       ます。

       [] で囲まれた文字のリストは、そのリスト中に含まれる ど
       れ か 1 文字にマッチします。ただし、リストの先頭がキャレッ
       ト ^ の場合は、そのリストに含まれ ない文字にマッチします。
       例 え ば、 正規表現 [0123456789] は数字 1 文字にマッチしま
       す。文字の範囲は最初と最後の文字をハイフン (`-') でつな ぐ
       ことで指定できます。最後に、特定の名前を持つ文字クラスがあ
       らかじめ定義されています。名前が内容を示しており、そ れ ら
       は、    [:alnum:],    [:alpha:],   [:cntrl:],   [:digit:],
       [:graph:],  [:lower:],  [:print:],  [:punct:],  [:space:],
       [:upper:], [:xdigit:] です。例えば、 [[:alnum:]][0-9A-
       Za-z] と同じですが、後者は POSIX ロケールや ASCII コード順
       に依存しますので、前者の方がロケールや文字集合に依存しませ
       ん。 (クラス名の中の角括弧はシンボル名の一部であり、リスト
       を区切る角括弧とは別に指定する必要があることに注意) リスト
       の中では、ほとんどのメタ文字は通常の文字として扱われます。
       リ テラル ] を含めるには、この文字をリストの先頭に置いてく
       正規表現の後には、繰り返し演算子のどれかが続くことがありま
       す。
       ?       直 前の項目はオプションであり、最大 1 回マッチしま
              す。
       *      直前の項目は 0 回以上マッチします。
       +      直前の項目は 1 回以上マッチします。
       {n}    直前の項目は厳密に n 回マッチします。
       {n,}   直前の項目は n 回以上マッチします。
       {n,m}  直前の項目は、最低 n 回、最大 m 回マッチします。

       2 つの正規表現は結合可能です。結果としてできあがる正規表現
       は、結合された 2 つの部分表現にそれぞれマッチする 2 つの部
       分文字列を結合した任意の文字列にマッチします。

       2 つの正規表現は中置き型演算子 | で繋ぐことが可能です。 結
       果としてできあがる正規表現は、どちらかの部分表現にマッチす
       る任意の文字列にマッチします。

       繰り返しは結合に優先します。また結合は選択に優先します。こ
       れらの優先規則を無効とするために、部分表現全体を括弧で囲む
       ことが可能です。

       n が 1 つの数字であるような後方参照 \n は、正規表現中の 括
       弧 で囲まれた n 番目の部分表現がマッチした文字列とマッチし
       ます。

       基本正規表現では、メタ文字 ?, +, {, |, (, ) は、その特殊な
       意味を失います。代わりに、バックスラッシュを付けた \?, \+,
       \{, \|, \(, \) を使用してください。

       伝統的な egrep は、メタ文字 { をサポートしませんでした。ま
       た、 このメタ文字の代わりに \{ をサポートする egrep 実装も
       いくつか存在するので、移植可能なスクリプトでは、リテラル {
       にマッチさせるために egrep パターンで { を使うことは避けて
       [{] を使うべきです。

       GNU egrep は、 { が不正な範囲指定の始まりであるなら特殊 文
       字 で はない、と想定して、伝統的な使用法のサポートを試みま
       す。例えば、シェルコマンド egrep '{1' は正規表現の文法エラ
       ー を 報告せずに、2 文字の文字列 {1 を検索します。 POSIX.2
       は、この動作を一つの拡張として許可していますが、移植可能な
       スクリプトではこの使用法を避けるべきです。


環境変数

       GREP_OPTIONS
              こ の変数は明示的なオプションの前に指定されるデフォ
              ルトオプション を 指 定 し ま す。 例 え ば、 も し
              GREP_OPTIONS'--binary-files=without-match
              --directories=skip' である場合、 grep は 2 つのオプ
              ショ ン  --binary-files=without-match--directo-
              ries=skip が明示的なオプションの前に指定されてい る
              様 に動作します。オプションの指定は空白によって区切

       LC_ALL, LC_CTYPE, LANG
              こ れらの変数は、例えばどの文字が空白であるかなど、
              文字の種類を決定する LC_CTYPE を指定します。ロケ ー
              ル はこれらの変数のうち最初に設定されているものによ
              り決定されます。もしこれらの変数全てが設定されて い
              な い場合、またはメッセージカタログがインストールさ
              れていない場合、または grep が国際言語サポートつ き
              (NLS) でコンパイルされてない場合には、 POSIX ロケー
              ルが用いられます。

       POSIXLY_CORRECT
              設定されている場合、 grep は POSIX.2 として動作し、
              それ以外の場合は grep は他の GNU プログラムのように
              動作します。 POSIX.2 ではファイル名の後に続く オ プ
              ショ ン は ファイル名として扱われます。デフォルトで
              は、このようなオプションはオペランドリストの先頭 に
              並 び 変 え ら れて、オプションとして扱われます。ま
              た、POSIX.2 では認識できないオプションは  "   不 法
              (illegal)" であると診断されますが、法律に違反してい
              るわけではないので、デフォルトではこれ ら は" 不 正
              (invalid)"   で あ る と 診 断 さ れ ま す。 また、
              POSIXLY_CORRECT   は 以 下 に 示 す   _N_GNU_nonop-
              tion_argv_flags_ を無効化します。

       _N_GNU_nonoption_argv_flags_
              (  Ngrep のプロセスIDの数値です) もしこの環境変
              数の i 番目の文字の値が 1 である場合、 i 番目の引数
              が オプションのようにみえる場合でも、 grep はこの引
              数をオプションとみなしません。各コマンドが実行さ れ
              る 環境にシェルがこの変数を設定することで、どのオペ
              ランドがファイル名ワイルドカード展開の結果 で あ る
              か、 つまり、どのオペランドをオプションとして扱うべ
              きでないかを指定できます。この動作は GNU C ライブラ
              リと使用され、 POSIXLY_CORRECT が設定されていない場
              合にのみ有効です。


診断

       通常、パターンにマッチした行が見つかった場合は 0 を、見 つ
       からなかった場合は 1 を返します。(ただし、 -v オプションを
       指定した場合は、逆になります。) パターンに文法エラーが存在
       したり、入力ファイルにアクセスできないなどのシステムエラー
       が発生した場合は、2 を返します。


バグ

       バグレポートは、 bug-gnu-utils@gnu.org まで Email してくだ
       さ い。この時、"Subject:" のどこかに "grep" という単語を忘
       れずに入れてください。

       {m,n} の表現で非常に大きな繰り返しを指定すると、非常に多く
       のメモリを消費します。さらに、ある種のあいまいな正規表現を
       指定すると、必要となる時間とメモリ領域は指数的に増 大 し、
       grep がメモリ不足を起こす可能性があります。

ABELNET VPSサービス