EN JA
GREP(1)
GREP(1) FreeBSD General Commands Manual GREP(1)

名称

grep, egrep, fgrep, zgrep, zegrep, zfgrepファイルパターンサーチャ (searcher)

書式

grep [ -abcdDEFGHhIiJLlmnOopqRSsUVvwxZ][ -A  num][ -B  num][ -C[ num]][ -e  pattern][ -f  file][ --binary-files= value][ --color[ = when]][ --colour[ = when]][ --context[ = num]][ --label][ --line-buffered][ --null][ pattern][ file ...]

解説

grep ユーティリティは、与えられた入力ファイルを 1 つ以上のパターンにマッチする行を選択して検索します。デフォルトで、パターンは、パターンの正規表現 (RE) が後続する改行を除いて、入力行にマッチするなら、入力行にマッチします。空の式は、すべての行にマッチします。少なくともパターンの 1 つにマッチする各入力行は、標準出力に書き込まれます。

grep は、簡単なパターンと基本的な正規表現 (BRE) のために使用されます。 egrep は、拡張正規表現 (ERE) を扱うことができます。正規表現に関する詳しい情報については、 re_format(7) を参照してください。 fgrep は、 grepegrep の両方より速いですが、固定パターンのみを扱うことができます (すなわち、正規表現を解釈しません)。パターンは、入力の部分にマッチしているパターン行のいずれかを許可する 1 つ以上の行から成ります。

zgrep, zegrepzfgrep は、それぞれ grep, egrepfgrep のように動作しますが、 compress(1) または gzip(1) 圧縮ユーティリティで圧縮された入力ファイルを受け付けます。

次のオプションが利用可能です:

-A num, - -after-context= num
各マッチの後に後続するコンテキストの num 行を印刷します。 -B-C オプションも参照してください。
-a, - -text
すべてのファイルを ASCII テキストとして扱います。通常、 grep は、ファイルがバイナリ文字を含んでいるなら、単に“Binary file ... matches”を印刷します。このオプションの使用によって、 grep は、強制的に指定されたパターンにマッチする行を出力します。
-B num, - -before-context= num
各マッチの前の先導するコンテキストの num 行を印刷します。 -A-C オプションも参照してください。
-b, - -byte-offset
マッチするパターンのバイト単位のオフセットは、それぞれマッチする行の前に表示されます。
-C[ num, --context= num]
各マッチを囲む先導して、後続するコンテキストの num 行を印刷します。デフォルトは、2 であり、 -A 2 -B 2 と同等です。注意: オプションとその引数の間に空白を与えてはいけません。
-c, - -count
選択された count 行だけが標準出力に書き込まれます。
- -colour=[ when, --color=[ when]]
GREP_COLOR 環境変数に格納された式にマッチするテキストをマークします。指定できる値は、`never', `always' または `auto' です。
-D action, - -devices= action
デバイス、FIFO とソケットのために要求される動作を指定します。デフォルト動作は、それらが、まるで通常のファイルであるかのように読み込まれることを意味する `read' です。動作が `skip' に設定されるなら、デバイスは、静かにスキップされます。
-d action, - -directories= action
ディレクトリのために要求される動作を指定します。それは、デフォルトで、ディレクトリが通常のファイルと同じ方法で読み込まれることを意味する、`read' です。他の指定できる値は、ディレクトリを静かに無視する `skip' と、それらを再帰的に読み込む、`recurse' で、それは、 -R-r オプションと同じ効果があります。
-E, - -extended-regexp
拡張正規表現 (すなわち、 grep を強制的に egrep として振る舞わせる) として pattern を解釈します。
-e pattern, - -regexp= pattern
入力の検索の間に使用されるパターンを指定します: 指定されたパターンのいずれかにマッチするなら、入力行は、選択されています。このオプションは、複数の -e オプションが、複数のパターンを指定するために使用されるか、またはパターンがダッシュ (‘-’) で始まるとき、最も役に立ちます。
- -exclude
指定されるなら、与えられたファイル名のパターンにマッチするファイルを検索に入れません。 - -exclude パターンは、 - -include パターンに優先し、 - -include パターンが指定されないなら、exclude されないすべてのファイルが、検索されることに注意してください。パターンは、ファイル名の構成だけではなく、指定されたフルパスにマッチします。
- -exclude-dir
-R が指定されるなら、与えられたファイル名のパターンにマッチするディレクトリを検索しないようにします。 - -exclude-dir パターンは、 - -include-dir パターンに優先し、 - -include-dir パターンが指定されないなら、exclude されないすべてのディレクトリが、検索されることに注意してください。
-F, - -fixed-strings
1 組の固定の文字列 (すなわち、 grep を強制的に fgrep として振る舞わせる) として pattern を解釈します。
-f file, - -file= file
file から 1 つ以上の改行で区切られたパターンを読み込みます。空のパターン行は、あらゆる入力行にマッチします。改行は、パターンの一部であると見なされません。 file が空であるなら、何もマッチしません。
-G, - -basic-regexp
基本的な正規表現 (すなわち、 grep を強制的に古い grep として振る舞わせる) として pattern を解釈します。
-H
常に出力行でファイル名のヘッダを印刷します。
-h, - -no-filename
出力行でファイル名のヘッダ (すなわち、ファイル名) を決して、印刷しません。
- -help
簡単なヘルプメッセージを印刷します。
-I
バイナリファイルを無視します。このオプションは、 - -binary-file= without-match オプションと同等です。
-i, - -ignore-case
マッチングで大文字と小文字を区別しません。デフォルトで、 grep は、大文字と小文字を区別します。
- -include
指定されるなら、与えられたファイル名のパターンにマッチするファイルだけが、検索されます。 - -exclude パターンは、 - -include パターンに優先することに注意してください。パターンは、ファイル名の構成だけではなく、指定されたフルパスにマッチします。
- -include-dir
-R が指定されるなら、与えられたファイル名のパターンにマッチするディレクトリだけが、検索されます。 - -exclude-dir パターンは、 - -include-dir パターンに優先することに注意してください。
-J, - -bz2decompress
テキストを検索する前に、圧縮されたファイルを bzip2(1) で圧縮復元します。
-L, - -files-without-match
選択された行を含まないファイルの名前だけが標準出力に書き込まれます。パス名は、検索されたファイル毎に一度リストされます。標準入力が検索されるなら、文字列“(standard input)”が書き込まれます。
-l, - -files-with-matches
選択された行を含むファイルの名前だけが標準出力に書き込まれます。検索を潜在的により高価でなくして (訳注: 意味不明)、マッチが見つけられるまで、 grep は、ファイルだけを検索します。パス名は、検索されるファイル毎に一度リストされます。標準入力が検索されるなら、文字列“(standard input)”が書き込まれます。
- -mmap
いくつかの状況の下でより良い性能をもたらすことができますが、未定義の振る舞いを引き起こすかもしれない、入力を読み込むために read(2) の代わりに mmap(2) を使用します。
-m num, - -max-count= num
num がマッチした後に、ファイルを読み込むことを停止します。
-n, - -line-number
各出力行は、行 1 で始まって、ファイルの相対的な行番号に先導されます。行番号のカウンタは、処理された各ファイルに対してリセットされます。このオプションは、 -c, -L, -l または -q が指定されるなら、無視されます。
- -null
ファイル名の後に 0 バイト印刷します。
-O
-R が指定されるなら、それらが明白にコマンド行にリストされる場合にだけ、シンボリックリンクをたどります。デフォルトは、シンボリックリンクをたどりません。
-o, - -only-matching
行のマッチングする部分だけを印刷します。
-p
-R が指定されるなら、シンボリックリンクは、たどられません。これは、デフォルトです。
-q, - -quiet, - -silent
静かな (quiet) モード: 通常に出力を抑制します。検索を潜在的により高価でなくして (訳注: 意味不明)、マッチが見つけられるまで、 grep は、ファイルだけを検索します。
-R, -r, - -recursive
リストされたサブディレクトリを再帰的に、検索します。
-S
-R が指定されるなら、すべてのシンボリックリンクは、たどられます。デフォルトは、シンボリックリンクは、たどられません。
-s, - -no-messages
サイレント (silent) モード。実在しなくて読み込み不可能なファイルは、無視されます (すなわち、それらのエラーメッセージは、抑制されます)。
-U, - -binary
バイナリファイルを検索しますが、それらを印刷することを試みません。
-V, - -version
バージョン情報を表示して、終了します。
-v, - -invert-match
選択された行は、指定されたパターンのいずれにもマッチ しない ものです。
-w, - -word-regexp
式は、(まるで、‘[[:<:]]’と‘[[:>:]]’ ( re_format(7) を参照) によって囲まれるかのように) 単語として検索されます。
-x, - -line-regexp
全体の固定の文字列または正規表現に対して選択された入力行だけが、行にマッチしていると見なされます。
-y
-i と同等です。時代遅れです。
-Z, -z, - -decompress
grep を強制的に zgrep として振る舞わせます。
- -binary-files= value
バイナリファイルの検索と印刷を制御します。オプションは、 binary デフォルトでバイナリファイルを検索しますが、それらを印刷しません。 without-match: バイナリファイルを検索しません。 text: すべてのファイルをテキストとして扱います。
- -context[ = num]
先導して、後続するコンテキストの num 行を印刷します。デフォルトは、2 です。
- -line-buffered
強制的にバッファリングされた行として出力します。デフォルトで、出力は、標準出力が端末であるとき、バッファリングされた行であり、そうでなければ、バッファリングされたブロックです。

ファイル引数が指定されないなら、標準入力が使用されます。

終了ステータス

grep ユーティリティは、次の値の 1 つで終了します:

0
1 つ以上の行が選択された。
1
行は、選択されませんでした。
>1
エラーが発生しました。

使用例

ファイル中にある単語‘patricia’をすべて見つけるためには:

$ grep 'patricia' myfile

行の始めにあるパターン‘ .Pp’をすべて見つけるためには:

$ grep '^\.Pp' myfile

アポストロフィは、全体の式がユーザのシェルの代わりに grep によって評価されることを保証します。キャレット‘ ^’は、行の始めのヌル文字列にマッチし、‘ \’は、‘ .’をエスケープしています。そうでなければ、それは、すべての文字にマッチします。

単語‘foo’または‘bar’を含まないファイル中のすべての行を見つけるためには:

$ grep -v -e 'foo' -e 'bar' myfile

拡張正則表現の簡単な例は、次の通りです:

$ egrep '19|20|25' calendar

ファイル‘calendar’の 19、20 または 25 のいずれかを調べます。

規格

grep ユーティリティは、 IEEE Std 1003.1-2008 (“POSIX.1”) 仕様に準拠しています。

フラグ[ -AaBbCDdGHhIJLmoPRSUVwZ]は、その仕様の拡張で、空のパターンファイルで使用されるとき、 -f フラグの振る舞いは、未定義の状態のままです。

すべての長いオプションは、このユーティリティの GNU バージョンとの互換性のために提供されています。

grep ユーティリティの歴史的なバージョンは、フラグ[ -ruy]もサポートしていました。この実装は、それらのオプションをサポートしています。しかしながら、それらの使用は、強くお勧めできません。

歴史

grep コマンドは、 Version 6 AT&T UNIX ではじめて登場しました。
July 28, 2010 FreeBSD