名称
grep, egrep, fgrep ― ファイルのパターン検索
構文
パターンによる単純な呼び出し
grep [-E|-F]
[-c|-l|-q]
[-bhinsvwx] pattern [file ...]
複数の
-e パターンによる呼び出し
grep [-E|-F]
[-c|-l|-q]
[-bhinsvwx] -e pattern... [-e pattern] ... [file ...]
-f ファイルによる呼び出し
grep [-E|-F]
[-c|-l|-q]
[-bhinsvwx] [-f pattern_file] [file ...]
旧形式
egrep [-cefilnsv] [expression] [file ...]
fgrep [-cefilnsvx] [strings] [file ...]
説明
grep コマンドは入力テキストファイル file (デフォルトは標準入力) を検索して、パターンに一致する行を捜します。通常は、該当する行が見つかるごとに、これが標準出力にコピーされます。 grep は、基本正規表現の構文をサポートしています regexp(5)参照)。 また、 -E オプション
(egrep) は、拡張正規表現 (ERE) の構文をサポートしています regexp(5)参照)。 さらに、 -F オプション
(fgrep) は、Boyer-Moore 高速文字列検索アルゴリズムに基づいて固定の strings を検索します。 -E および -F オプションは、 pattern の途中に含まれる改行を代替文字として扱います。ヌルの式または文字列はすべての行に一致することになります。
下位互換の目的で、 egrep および fgrep の構文も提供されています。ただし、今後の移植性を考慮して、 -E および -F のオプションを使用するようにしてください。
オプション
| -E | | 拡張正規表現。指定したパターンはそれぞれ、1 つ以上の
ERE で構成されるシーケンスになります。 ERE は改行文字で区切ることも、また -e expression オプションでそれぞれ個別に指定することもできます。
パターンは、指定したシーケンス中のいずれかの ERE が入力行の内容
(ただし、後続の改行文字を除く) にマッチすると、一致していることになります。 egrep でも同じ機能が実行されます。 |
| -F | | 固定文字列。指定したパターンはそれぞれ、1 つ以上の文字列になります。
文字列は改行文字で区切ることも、また -e expression オプションでそれぞれ個別に指定することもできます。パターンは、指定したシーケンス中にいずれかの文字列がその行に入っている場合に一致します。 fgrep でも同じ機能が実行されます。 |
| -b | | 各行の先頭に、その行が見つかった位置のブロック番号を付けます。 これは、コンテキストによってディスクのブロック番号を検出する場合に利用できます。
なお、ブロック番号は、ファイルから読み取ったバイト数を 512 で割り、
その結果を切り捨てる方法で計算されます。 |
| -c | | 一致した行の行数だけをプリントします。 |
| -e expression | | 単純な expression だけの引き数と同じです。ただし、 expression がハイフン (-) で開始している場合に、利用できます。複数の -e オプションを使用して、複数のパターンを指定することもできます。
入力行は、指定したパターンのいずれかに一致すると、選択されます。 |
| -f pattern_file | | 正規表現 expression (grep および grep -E)
または文字列 strings のリスト (grep -F) を pattern_file から読み取ります。 |
| -h | | 複数のファイルを検索する時に、ファイル名を表示しません。 |
| -i | | 比較処理の際に、大文字/小文字の区別を無視します。 |
| -l | | 一致した行のあるファイルの名称を (1 回だけ) 改行で区切ってリストします。
標準入力を検索の対象とする場合、POSIX 環境ではパス名として (standard
input) が書き込まれます。 他の環境では (standard
input) の代わりに、その環境に適切なパス名が書き込まれます。 |
| -n | | 各行の先頭に、ファイル内の相対行番号 (最初の行を 1 とします)
を付けます。この行番号は、検索対象のファイルごとにリセットされます。このオプションは、 -c, -b, -l,
または -q を指定すると、無視されます。 |
| -q | | (メッセージ表示なし) 一致した行の有無にかかわらず、標準出力には何も出力されなくなります。
一致する行を最初に検出した時点で、戻り値 0 で終了します。 このオプションを指定すると、出力を生成するオプションは、すべて無視されます。 |
| -s | | ファイルが存在していない場合、 またはファイルが読み取れない場合に生成されるエラーメッセージを抑制します。 |
| -v | | 一致する行以外の行をすべてプリントします。 |
| -w | | ワード全体を形成する一致を含む行だけを選択します。一致する副文字列は行頭にあるか、あるいは非ワード構成文字が前にあるかを検査します。同様に、行の末尾にあるか、非ワード構成文字が後ろに続くかを検査します。ワードの構成文字は、英字、数字、および下線です。 |
| -x | | (文字列全体の一致) 入力行全体が固定の文字列、または正規表現にマッチした場合に限って、一致とみなされます。 |
複数の入力ファイルがある場合に、出力が生成されるときは必ず、ファイル名が出力されます。また、 expression の中で $, *, [, ^, |, (, ),
および \ の文字を使用するときは、これらの文字がシェルに対して特殊な意味を持つので、注意が必要です。この場合は、 expression 引き数全体を単一引用符で囲む ('...').
のが安全な方法です。
多言語化対応
環境変数
LC_ALL および対応する環境変数 (先頭が LC_ で始まる) がロケール変数を指定しない場合、 LANG がロケールカテゴリで使われるロケール変数を決定します。 LANG が設定されていないか空白文字列に設定されている場合、 C がデフォルトとして使われます ( lang(5) を参照)。
LC_ALL は、 LANG または先頭が LC_ で始まる環境変数によって設定されたロケールカテゴリ値に代わるロケール変数を決定します。
LC_COLLATE により、正規表現の評価に使用する照合順序が決定されます。
LC_CTYPE により、テキスト、英文字の分類、 -i オプションに対する大文字/小文字の情報、
および正規表現に使用するキャラクタクラスの式をシングルバイト、 またはマルチバイトのいずれの文字で解釈するかを決定します。
LC_MESSAGES により、メッセージの表示に使用する言語を決定します。
インターナショナル変数のいずれかの設定が不適当な場合には、
コマンド はすべてのインターナショナル変数が C に設定されているものとして動作します。 environ(5) を参照してください。
サポートされるコードセット
シングルバイトおよびマルチバイトの文字コードセットがサポートされます。
戻り値
grep は終了時に、次のいずれかの値を返します。
| 0 | | 1 つ以上の一致する行が検出された場合 |
| 1 | | 一致する行が検出されない場合 |
| 2 | | 構文エラーまたはファイルにアクセスできない場合 (一致する行が検出された場合も含む) |
例
POSIX シェル sh(1))
の場合、2 つのファイルを検索し、4 つの文字列のいずれかを含む行を捜します。
grep -F 'if
then
else
fi' file1 file2
grep -F に対して、文字列の最後とファイル名の先頭の位置を指示する場合、
単一引用符が必要になります。
C シェル ( csh(1) 参照
) の場合、次のコマンドを使用することができます。
grep -F 'if\ then\ else\ fi' file1 file2
次の内容を含む address という名前のファイルを検索する場合、
Ken 112 Warring St. Apt. A
Judy 387 Bowditch Apt. 12
Ann 429 Sixth St.
次のコマンドを使用すると、
以下の結果が出力されます。
Judy 387 Bowditch Apt. 12
ファイルを検索して、 Dec または Nov のいずれかの文字列を含む行を捜す場合は、
次のコマンドのどちらかを使用します。
grep -E '[Dd]ec|[Nn]ov' file
egrep -i 'dec|nov' file
現在のディレクトリのすべてのファイルを検索して、文字列 xyz を探します。
現在のディレクトリのサブツリーのすべてのファイルを検索して、文字列 xyz を探し、その際、ファイル名展開によって
システム引き数リスト制限を超えるエラーが発生しないようにします。
find . -type f -print |xargs grep xyz
前の例では、文字列 xyz のあるファイルの名称をプリントしません。 grep にファイル名をプリントさせるには、コマンド行の grep コマンド部分に 2 番目の引き数を追加します。
find . -type f -print |xargs grep xyz /dev/null
この形式では、最初のファイル名は find が生成するものであり、2 番目のファイル名はヌルファイルです。
警告
(XPG4 専用) -q オプションを指定すると、エラーが検出された場合でも、入力ファイルを選択すると戻り値はゼロとなります。
指定しない場合は、デフォルトのアクションが取られます。
-w オプションが非ワード構成文字とともに指定されている場合、出力は予測不能です。
参照
sed(1), sh(1), regcomp(3C), environ(5), lang(5), regexp(5)
標準準拠
grep: SVID2, SVID3, XPG2, XPG3, XPG4, POSIX.2
egrep: SVID2, SVID3, XPG2, XPG3, XPG4,
POSIX.2
fgrep: SVID2, SVID3, XPG2, XPG3, XPG4,
POSIX.2