grepコマンドの使い方:文字列パターンで検索する
grepは、ファイルや出力の中から、指定した文字列やパターンに一致する行を取り出すコマンドです。ログの調査、設定ファイルの確認、コマンド出力の絞り込みなど、Linuxで最も使う場面が多いコマンドの1つです。
grepのよく使う形
実務や学習で登場しやすい使い方を、そのまま入力できる形でまとめました。
| コマンド例 | 内容 |
|---|---|
grep error app.log | app.logから「error」を含む行を表示 |
grep -i error app.log | 大文字小文字を区別せず検索 |
grep -n error app.log | 一致した行の行番号も表示 |
grep -r "timeout" /etc/ | ディレクトリ配下を再帰的に検索 |
grep -v '^#' file.conf | 一致しない行を表示(コメント行を除く) |
grep -c error app.log | 一致した行数だけ表示 |
ps aux | grep nginx | 他のコマンドの出力を絞り込む |
grep -E 'error|warn' app.log | 拡張正規表現で、いずれかに一致する行を表示 |
grepの主なオプション
| オプション | 意味 |
|---|---|
-i | 大文字小文字を無視 |
-v | 一致しない行を表示 |
-c | 件数のみ |
-n | 行番号 |
-r | 再帰検索 |
-l | 一致したファイル名のみ表示 |
-w | 単語単位で一致 |
-E | 拡張正規表現を使用 |
-o | 一致部分のみ表示 |
-A・-B・-C | 前後の行も表示 |
grepの実行例と結果の読み方
user@linux-study:~$ grep -n "ERROR" app.log
15:2026-01-10 09:12:03 ERROR Connection timeout
42:2026-01-10 09:20:11 ERROR Disk full
grep -nで、app.logの中から"ERROR"という文字列を含む行だけを抽出し、-nによって行番号(15行目・42行目)も一緒に表示しています。
練習用ターミナルでは、grepをブラウザ上で安全に試せます。
grepを使うときの注意点
ps aux | grep nginxのように使うと、grep nginx自身のプロセスも結果に出ます。気になる場合はpgrep nginxが便利です。
検索パターンに$や*などの特殊文字を含めるときは、シングルクォートで囲むとシェルに解釈されません。固定の文字列として検索したいときはgrep -Fを使います。
大きなログを調べるときは、-nで行番号を出し、-A・-Bで前後の行も合わせて見ると、原因をたどりやすくなります。
grepに関するよくある質問
複数のキーワードで検索するには?
grep -E 'word1|word2' fileのように|でつなぎます。すべてを含む行だけ欲しいときは、grep word1 file | grep word2とパイプでつなぎます。
前後の行も表示するには?
-A 3で一致行の後ろ3行、-B 3で前3行、-C 3で前後3行を表示します。
grepで「Binary file matches」と出るのは?
バイナリファイルとして判断されたためです。テキストとして扱うときは-aを付けます。
関連ページ
あわせて覚えたいコマンド:find・sed・awk・tail・journalctl
grepが登場する章:初級 第5章