grepコマンドとは?Linuxで文字列を検索する基本をやさしく解説!
生徒
「先生、Linuxでファイルの中から特定の文字を探す方法ってありますか?」
先生
「あるよ。そのときに使うのがgrepコマンドなんだ。文字列を探すための便利なコマンドだよ。」
生徒
「文字列って、たとえば『エラー』とか『成功』みたいな言葉を探すってことですか?」
先生
「そうそう!ログファイルとか大量のテキストファイルから、指定した文字を見つけたいときにとっても役立つよ。実際に基本の使い方から見ていこうか。」
1. grepコマンドとは?
grep(グレップ)コマンドは、Linuxでファイル内の文字列を検索するためのコマンドです。指定したキーワードが含まれる行だけを表示するので、ログ解析や設定ファイルの調査に便利です。
「検索する」という意味のglobal search for regular expression and print outという言葉の頭文字を取って、「grep」と名付けられています。
2. grepコマンドの基本構文
基本的な使い方は次のとおりです。
grep 検索したい文字列 ファイル名
たとえば、ファイル「log.txt」から「エラー」という言葉を探したい場合は以下のようにします。
grep エラー log.txt
2025-09-15 エラーが発生しました
2025-09-16 エラーコード: 404
このように、「エラー」を含む行だけが表示されます。
3. 大文字・小文字を区別しない検索
通常、grepは大文字と小文字を区別します。しかし、-iオプションをつけると、大文字と小文字を無視して検索できます。
grep -i error log.txt
2025-09-15 エラーが発生しました
2025-09-16 ERROR: Something went wrong
4. 行番号を表示する
どの行にマッチしたのかを知りたいときは、-nオプションを使います。
grep -n エラー log.txt
3:2025-09-15 エラーが発生しました
8:2025-09-16 エラーコード: 404
5. ファイル全体から再帰的に検索(-r)
-rオプションを使えば、フォルダ内のすべてのファイルから文字列を探すことができます。複数ファイルをまとめて検索したいときに便利です。
grep -r エラー /home/user/logs/
logs/system.log:2025-09-16 エラーが発生しました
logs/error.log:2025-09-17 エラーコード: 500
6. 特定の拡張子のファイルだけを検索する
たとえば、.logファイルだけを対象にして検索したい場合は、--includeオプションを組み合わせて使います。
grep -r --include="*.log" エラー /home/user/
error.log:エラーコード: 403
7. 検索結果を反転させたいとき(該当しない行を表示)
-vオプションを使うと、検索キーワードを含まない行を表示できます。これは「エラー以外の情報だけ見たい」など、フィルター目的でよく使われます。
grep -v エラー log.txt
2025-09-15 正常に動作しました
2025-09-16 成功
8. 他の検索ツールとの違い(findやawkとの違い)
findコマンドは「ファイル名」を探すためのコマンドで、grepとは用途が違います。たとえば、名前に「log」が入っているファイルを探すにはfindを使います。
一方で、awkコマンドは、検索+加工が得意なコマンドです。grepは「探すだけ」、awkは「探して整形」までできます。
9. grepを使うときの注意点
- 文字列にスペースが入っている場合はクォートで囲うと安全です。
grep "エラー 発生"のように、複数単語を検索する場合もクォートを忘れずに。- 検索対象がバイナリファイルの場合、意図しない動作になることがあります。テキストファイルを対象にしましょう。