宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
「大量のログファイルから特定のエラーメッセージを素早く見つけたい」
「複数のファイルをまたいで文字列を検索したい」

Linuxのログ調査や設定ファイルの確認で、文字列検索は毎日必ず使う操作です。

この記事では、grep コマンドを使ってファイルから文字列を検索する方法を解説します。
基本的な使い方から、再帰検索・正規表現・よく使うオプションまで順番にまとめました。
【この記事でわかること】
・grep 文字列 ファイル名 でファイル内の文字列を検索できる
・-r オプションでディレクトリ配下を再帰検索できる
・-n で行番号付き表示、-l でファイル名のみ表示できる
・-i で大文字小文字を区別しない検索が可能

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

grep コマンドの基本的な使い方

1. ファイルから文字列を検索する

# "error" という文字列を /var/log/messages から検索する [root@Dolphin ~]# grep "error" /var/log/messages Apr 4 09:15:23 Dolphin kernel: error: Unable to read... Apr 4 10:32:11 Dolphin httpd: error: Permission denied...

2. 行番号付きで検索する(-n)

[root@Dolphin ~]# grep -n "error" /var/log/messages 145:Apr 4 09:15:23 Dolphin kernel: error: Unable to read... 289:Apr 4 10:32:11 Dolphin httpd: error: Permission denied... # ↑行番号が付いて、ファイルのどこにあるかわかります

3. 大文字小文字を区別しない(-i)

# "error" "Error" "ERROR" をまとめて検索する [root@Dolphin ~]# grep -i "error" /var/log/messages

ディレクトリ配下を再帰検索する(-r)

# /var/log 配下のすべてのファイルから "error" を検索する [root@Dolphin ~]# grep -r "error" /var/log/ /var/log/messages:Apr 4 09:15:23 Dolphin kernel: error: ... /var/log/httpd/error_log:Apr 4 10:32:11 error: ... # 特定の拡張子のファイルのみを検索する [root@Dolphin ~]# grep -r "error" /var/log/ --include="*.log" # 特定ファイルを除外して検索する [root@Dolphin ~]# grep -r "error" /var/log/ --exclude="*.gz"

便利なオプション

マッチしたファイル名のみを表示する(-l)

# マッチしたファイルの名前だけを表示する [root@Dolphin ~]# grep -l "error" /var/log/*.log /var/log/httpd/error_log /var/log/maillog

前後の行を表示する(-A・-B・-C)

# マッチ行の前後3行を表示する(-C 3) [root@Dolphin ~]# grep -C 3 "error" /var/log/messages # マッチ行の後3行を表示する(-A 3) [root@Dolphin ~]# grep -A 3 "error" /var/log/messages # マッチ行の前3行を表示する(-B 3) [root@Dolphin ~]# grep -B 3 "error" /var/log/messages

マッチしない行を表示する(-v)

# "error" を含まない行を表示する [root@Dolphin ~]# grep -v "error" /var/log/messages # ps コマンドの出力から grep 自身を除外する [root@Dolphin ~]# ps aux | grep "httpd" | grep -v grep

正規表現を使った検索

# 行頭から始まる "error" を検索する [root@Dolphin ~]# grep "^error" /var/log/messages # "error" で終わる行を検索する [root@Dolphin ~]# grep "error$" /var/log/messages # "err" または "error" を検索する(-E で拡張正規表現) [root@Dolphin ~]# grep -E "err(or)?" /var/log/messages

本記事のまとめ

やりたいこと コマンド
ファイルから文字列を検索する grep "文字列" ファイル名
行番号付きで検索する grep -n "文字列" ファイル名
大文字小文字を区別しない grep -i "文字列" ファイル名
ディレクトリ配下を再帰検索する grep -r "文字列" ディレクトリ名
マッチしたファイル名のみを表示する grep -l "文字列" ファイル名
マッチしない行を表示する grep -v "文字列" ファイル名
特定ファイルを除外して再帰検索する grep -r "文字列" ディレクトリ名 --exclude="*.gz"
grep はログ調査・設定ファイル確認・コード検索など、Linuxの日常作業で毎日使う最重要コマンドの一つです。
まずは grep -rn(再帰+行番号)の組み合わせから使い始めましょう。

grepコマンドを自在に使って、大量ログの中から必要な情報を素早く見つける

grepのオプションを使いこなせると、ログ調査・設定ファイルの確認・コードの検索が格段に効率化されます。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。