テキストを検索したい(grep)
$ grep 検索パターン 検索するファイル
ファイルの内容から文字列を検索するコマンドです。 標準出力をパイプして、特定の文字列を抜きだしたい場合にもよく使います。
デフォルトの検索パターンは基本正規表現(BRE)として扱われます。
大文字/小文字を区別せずに探したい(-i)
$ grep -i 検索パターン 検索するファイル
-iオプションで、大文字/小文字を区別せずに検索できます。
マッチしなかった行を探したい(-v)
$ grep -v 検索パターン 検索するファイル
-vオプションで、検索パターンにマッチしなかった行だけを書きだせます。
行番号を表示したい(-n)
$ grep -n 検索パターン 検索するファイル
-nオプションで、マッチした行の頭に行番号をつけて表示できます。
マッチした数だけ知りたい(-c)
$ grep -c 検索パターン 検索するファイル
-cオプションで、マッチした行の内容ではなく、行数だけを書きだせます。
マッチしたファイル名だけ知りたい(-l)
// マッチした行を含むファイル名を書きだしたい
$ grep -l 検索パターン 検索するファイル
// マッチした行を含まないファイル名を書きだしたい
$ grep -L 検索パターン 検索するファイル
-lオプションで、マッチした内容ではなく、ファイル名だけを書きだせます。
-Lオプションを使うと、逆にマッチしなかったファイル名を書きだせます。
マッチした箇所を色付けしたい(--color)
$ grep --color 検索パターン 検索するファイル
--colorオプションで、マッチした文字列を色付きで表示できます。
ディレクトリを再帰的に探したい(-r / -R)
$ grep -r 検索パターン 検索するディレクトリ
-rオプションで、ディレクトリ以下を再帰的に検索できます。
BSD/macOS版のgrepでは-rと-Rは同じ意味です。
拡張正規表現を使いたい(-E)
// AまたはBを含む行を探したい
$ grep -E "A|B" 検索するファイル
-Eオプションで、拡張正規表現(ERE)を使って検索できます。
デフォルトの基本正規表現(BRE)では|や+などの記号を
\|や\+のようにエスケープする必要がありますが、
-Eを使うとエスケープなしで使えます。
前後の行も一緒に見たい(-A / -B / -C)
// マッチした行の後を3行表示したい
$ grep -A 3 検索パターン 検索するファイル
// マッチした行の前を3行表示したい
$ grep -B 3 検索パターン 検索するファイル
// マッチした行の前後を3行ずつ表示したい
$ grep -C 3 検索パターン 検索するファイル
-A(after)・-B(before)・-C(context)オプションで、
マッチした行だけでなく前後の行もあわせて確認できます。
ログの前後の文脈を確認したいときに便利です。
圧縮ファイルを検索したい(zgrep)
$ zgrep 検索パターン 検索するファイル.gz
zgrepはgzipで圧縮されたファイルを展開せずに検索できるコマンドです。
grepと同じオプションがそのまま使えます。
ローテーションされて.gz化されたログをまとめて検索したいときに便利です。
アクセスログを確認したい
// 404エラーだけを確認したい
$ zgrep '" 404 ' access.log-20260819.gz
// 404エラー以外を確認したい
$ zgrep -v '" 404 ' access.log-20260819.gz
// 過去のアーカイブをまとめて確認したい
$ zgrep '" 404 ' access.log-*.gz
// 特定のIPアドレスからのアクセスを確認したい
$ zgrep '^127.0.0.1 ' access.log-20260819.gz
// 特定のパスへのGETリクエストを確認したい
$ zgrep '"GET /index.html ' access.log-20260819.gz
ウェブサーバーのアクセスログを確認するサンプルです。
アクセスログはローテーションされて.gzで保存されていることが多いので、
zgrepを使うと展開せずにそのまま検索できます。
上記のサンプルはApacheのアクセスログ(Combined Log Format)を例にしています。
127.0.0.1 - - [20/Aug/2026:12:00:00 +0900] "GET /index.html HTTP/1.1" 404 1234 "-" "Mozilla/5.0"
ステータスコードは"リクエスト行"の直後にあるため、
前後にダブルクォートとスペースを含めて検索すると、
レスポンスサイズやUser-Agentに含まれる数字との誤マッチを防げます。
-vを使うと、逆に特定のステータスコードを除外して確認できます。
IPアドレスで絞り込みたい場合は、行頭を示す^と組み合わせると、
X-Forwarded-Forヘッダーなど別の欄に含まれる同じIPアドレスとの誤マッチを防げます。
リクエストパスで絞り込みたい場合も、HTTPメソッドに続けて
末尾にスペースを1つ含めて検索すると、
似たパス(例:/index.html2)との誤マッチを防げます。