Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

grep

『grep』はファイルや標準入力から正規表現パターンに一致する行を検索して表示するコマンドです。ログ解析やソースコード検索で非常によく使われます。

構文
grep [オプション] パターン [ファイル...]
オプション一覧
オプション概要
grep パターン ファイルパターンに一致する行を表示します。
-i大文字小文字を区別しません。
-rディレクトリを再帰的に検索します。
-v一致しない行を表示します(否定検索)。
-n一致した行の行番号を表示します。
-l一致したファイル名のみ表示します。
-L一致しなかったファイル名のみ表示します。
-c一致した行数のみ表示します。
-E拡張正規表現(ERE)を使用します(egrep 相当)。
-Fパターンを固定文字列として扱います(正規表現を解釈しません)。
-w単語全体に一致するもののみ表示します。
-x行全体に一致するもののみ表示します。
-A N一致行の後N行も表示します(After)。
-B N一致行の前N行も表示します(Before)。
-C N一致行の前後N行も表示します(Context)。
--include="*.php"再帰検索時に対象ファイルを拡張子で絞り込みます。
--exclude-dir=.git指定ディレクトリを除外して検索します。
サンプルコード

以下のファイルを例に説明します。

# app.log の内容:
# 2026-03-05 09:58:10 INFO  server started
# 2026-03-05 10:00:01 ERROR database connection failed
# 2026-03-05 10:02:15 INFO  retrying connection
# 2026-03-05 10:03:30 WARNING disk usage 85%
# 2026-03-05 10:05:22 ERROR timeout after 30s
# 2026-03-05 10:06:00 INFO  connection restored

📁 ~/project/src/ 📄 index.php ("TODO" を含む) 📄 utils.php ("TODO" を含む) 📄 config.txt (# コメント行を含む)

ファイルから『error』を含む行を検索します(大文字小文字を区別)。

grep "error" app.log
2026-03-05 10:00:01 ERROR database connection failed
2026-03-05 10:05:22 ERROR timeout after 30s

『-i』で大文字小文字を無視して検索します。

grep -i "error" app.log
2026-03-05 10:00:01 ERROR database connection failed
2026-03-05 10:05:22 ERROR timeout after 30s

『-n』で行番号付きで表示します。

grep -n "ERROR" app.log
2:2026-03-05 10:00:01 ERROR database connection failed
5:2026-03-05 10:05:22 ERROR timeout after 30s

『-c』で一致した行数のみ表示します。

grep -c "ERROR" app.log
2

『-v』でパターンに一致しない行を表示します(コメント行を除外する例)。

grep -v "^#" config.txt
host=localhost
port=3306
debug=true

『-E』で拡張正規表現を使い、複数キーワードを検索します。

grep -E "ERROR|WARNING" app.log
2026-03-05 10:00:01 ERROR database connection failed
2026-03-05 10:03:30 WARNING disk usage 85%
2026-03-05 10:05:22 ERROR timeout after 30s

『-C N』で一致行の前後N行も表示します。

grep -C 1 "WARNING" app.log
2026-03-05 10:02:15 INFO  retrying connection
2026-03-05 10:03:30 WARNING disk usage 85%
2026-03-05 10:05:22 ERROR timeout after 30s

『-r』でディレクトリ以下を再帰検索します。『-l』を付けるとファイル名のみ表示します。

grep -rl "TODO" ./src
./src/index.php
./src/utils.php

『--include』で対象ファイルを拡張子で絞り込みます。『--exclude-dir』で特定のディレクトリを除外します。

grep -r --include="*.php" --exclude-dir=.git "TODO" .
./src/index.php:// TODO: バリデーション追加
./src/utils.php:// TODO: エラーハンドリング
概要

『grep -r --include="*.php" パターン .』は PHP プロジェクトでの関数・変数の利用箇所検索によく使うパターンです。現代では『ripgrep(rg)』や『ag(The Silver Searcher)』など高速な代替ツールも普及しています。

テキストの置換には『sed』を、フィールド処理には『awk』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。