Grepコマンド
1. 検索対象・範囲の制御(最重要)
業務で最も使用頻度が高い、検索範囲やファイルをコントロールするオプションです。
| オプション | 意味 | 主な利用シーン・解説 |
-r / -R |
ディレクトリ内を再帰的に検索 | サブディレクトリ配下のファイルも含めて一括検索します。-R はシンボリックリンクも追跡します。 |
-i |
大文字・小文字を区別しない | error と ERROR の両方を検知したいログ調査の基本オプションです。 |
-w |
単語単位で完全一致検索 | cat を検索した際に category などにマッチするのを防ぎ、単語として完全一致するものだけを抽出します。 |
-x |
行全体で完全一致検索 | 指定した文字列と「行全体」が一致する場合のみ抽出します(設定ファイルのチェック等)。 |
-v |
一致しない行を抽出(除外) | 特定の不要ログやコメント行(grep -v '^#')を除外して出力したい時に必須です。 |
2. 出力結果の絞り込み・表示制御
結果の表示形式を整え、他のコマンドへパイプで渡す際や集計作業で役立つオプションです。
| オプション | 意味 | 主な利用シーン・解説 |
-n |
行番号を表示 | ヒットした箇所の行番号を表示します。ソースコードや設定ファイルの修正位置特定に必須です。 |
-l |
マッチした「ファイル名」のみ表示 | どのファイルに含まれているか一覧化したい時に使用します(xargs や vim への引き渡しに便利)。 |
-L |
マッチしなかったファイル名を表示 | 特定の設定や記述が存在しないファイルを抽出したい時に使います。 |
-c |
マッチした「行数」のみ表示 | 各ファイルで該当するログが何件発生したかカウントする際に使用します。 |
-o |
マッチした「部分のみ」を抽出 | 行全体ではなく、正規表現などでヒットした文字列そのものだけを切り出したい時に便利です。 |
-h |
検索結果からファイル名を非表示 | 複数ファイルを検索した際、デフォルトで付く先頭のファイル名表示を消します。 |
-H |
検索結果に常にファイル名を表示 | 単一ファイル検索時でも強制的にファイル名を表示させます。 |
3. 前後文脈(コンテキスト)の表示
エラーログの前後関係や、関数の前後処理を確認する際に非常に強力なオプションです。
| オプション | 意味 | 主な利用シーン・解説 |
-A [行数] |
マッチ行の「後(After)」を表示 | エラー発生行の後のスタックトレースや処理の流れを確認したい時(例: -A 5)。 |
-B [行数] |
マッチ行の「前(Before)」を表示 | エラー直前にどんな処理が走っていたか確認したい時(例: -B 5)。 |
-C [行数] |
マッチ行の「前後(Context)」を表示 | 前後それぞれの指定行数をまとめて表示します(例: -C 3 は前後3行ずつ表示)。 |
4. 対象ファイルのフィルタリング(include / exclude)
特定の拡張子だけを調べたい時や、巨大なログ・バイナリ・ディレクトリを除外したい時に使います。
| オプション | 意味 | 主な利用シーン・解説 |
--include=パターン |
指定パターンのみ検索対象にする | 例: --include="*.log" や --include="*.java" で特定拡張子に限定。 |
--exclude=パターン |
指定パターンを検索対象から除外 | 例: --exclude="*.tmp" で一時ファイルを除外。 |
--exclude-dir=パターン |
指定ディレクトリを検索から除外 | 例: --exclude-dir=".git" や --exclude-dir="node_modules" で無駄な検索をカット。 |
5. 正規表現・パターン指定
条件を複雑にして絞り込むためのオプションです。
| オプション | 意味 | 主な利用シーン・解説 |
-E |
拡張正規表現(ERE)を使用 | ` |
-F |
固定文字列として検索(高速) | 正規表現のメタ文字(. や * など)をただの文字列として検索します(fgrep 同等で非常に高速)。 |
-e [パターン] |
検索パターンを明示・複数指定 | 複数の検索条件を指定したい場合や、ハイフンで始まる文字列を検索する際に使用します(例: grep -e "error" -e "warn")。 |
-f [ファイル] |
パターンをファイルから読み込む | 改行区切りで書かれたパターンファイルを読み込んで一括検索します。 |
6. 特殊・実用オプション
| オプション | 意味 | 主な利用シーン・解説 |
-I |
バイナリファイルを無視する | バイナリファイル内のマッチを無視し、テキストファイルのみを対象にします。 |
-a / --text |
バイナリファイルをテキストとして処理 | ログに制御文字などが混ざってバイナリ判定されてしまったファイルを強制的に検索します。 |
--color=auto |
マッチ部分を色付け表示 | 端末出力で見やすく装飾します(エイリアスに設定されることが多いです)。 |
-
ログからエラー前後を確認(大文字小文字無視+前後3行+行番号)
Bash
grep -in -C 3 "error" app.log -
ソースコード全体から特定単語を再帰検索(.gitやnode_modules除外)
Bash
grep -rnw --exclude-dir={.git,node_modules} "targetFunction" ./ -
特定の拡張子だけ絞り込んで複数キーワード(OR検索)
Bash
grep -rn -E "Exception|Error" --include="*.java" ./srcss


コメント