grep パターンに一致する行を検索する
grep [オプション] パターン [ファイル...]試してみる
grep 404 access.log404 を含む行を表示します。
grep -n GET access.log | head -n 3-n で行番号を付けます。
grep -c 200 access.log一致した行の数だけを表示します。
grep -v 200 access.log200 を含まない行を表示します(-v は反転)。
grep -E '404|500' access.log拡張正規表現で、404 または 500 を含む行を表示します。
grep -ri port confディレクトリの中を再帰的に、大文字小文字を区別せず検索します。
主なオプション
-i | 大文字と小文字を区別しない |
|---|---|
-v | 一致しない行を表示する |
-n | 行番号を付ける |
-c | 一致した行数だけ表示する |
-r | ディレクトリを再帰的に検索する |
-l | 一致したファイル名だけ表示する |
-E | 拡張正規表現を使う(egrep と同じ) |
-w | 単語として一致するものだけ対象にする |
解説
基本
grep は、ファイルや標準入力から、パターンに一致する行を探して表示します。パターンには、文字列のほか正規表現が使えます。ps aux | grep sshd のように、他のコマンドの出力を絞り込む使い方もよくあります。
終了コード
一致する行があれば 0、なければ 1、エラーは 2 を返します。スクリプトで if grep -q パターン ファイル; then のように、存在確認に使えます。-q は何も出力しません。
正規表現
標準は基本正規表現です。^ は行頭、$ は行末、. は任意の1文字、* は直前の文字の繰り返しです。-E を付けると、+、?、|、() がそのまま使えます。正規表現として扱いたくない文字列は、-F で固定文字列として検索します。
前後の行
-A 2 は一致した行の後ろ2行、-B 2 は前2行、-C 2 は前後2行をあわせて表示します。
気をつけること
パターンに $ やスペースを含むときは、シェルに展開されないよう、クォートで囲みます。-r でディレクトリを検索すると、複数のファイルが対象になるため、各行の先頭にファイル名が付きます。