システム管理者、開発者、DevOpsエンジニアにとって、ログファイルの解析は日常業務です。数多くのツールが存在しますが、grep (Global Regular Expression Print) はそのシンプルさと強力さから、今なお最も広く使われているコマンドライン・ツールの一つです。

本記事では、grep を駆使して様々なログ(システムログ、アプリケーションログ、Webサーバーログなど)からエラーを迅速に見つけ出すための、実践的な10の例を紹介します。各例には解説とバリエーションも添えています。

  1. 特定のエラーキーワードを検索する 最も基本的な使い方です。ログファイル内から「ERROR」という文字列を含む行を表示します。

bash grep "ERROR" /var/log/syslog 大文字小文字を区別しない場合は -i オプションを使用します。

bash grep -i "error" /var/log/syslog 2. 複数ファイルを再帰的に検索する /var/log/ ディレクトリ全体のように、複数のログファイルから一度に検索するには -r オプションを使います。

bash grep -r "ERROR" /var/log/ 行番号も表示したい場合は -n を追加します。

bash grep -rn "ERROR" /var/log/ 3. エラーの前後行を表示して文脈を把握する エラー行だけを見ても、問題の原因が分からないことがあります。-A (後)、-B (前)、-C (前後) オプションで前後の行を一緒に表示できます。

bash grep -A 5 "ERROR" app.log # エラー行とその後の5行を表示 grep -B 5 "ERROR" app.log # エラー行とその前の5行を表示 grep -C 5 "ERROR" app.log # エラー行と前後5行ずつ表示 4. エラーの発生回数をカウントする 大量のログからエラーの頻度を把握したい場合、-c オプションで行数をカウントします。

bash grep -c "ERROR" /var/log/nginx/error.log 大文字小文字を無視してカウントする例:

bash grep -ci "warning" /var/log/syslog 5. 特定の行を除外する (-v) -v オプションは、パターンにマッチしない行を表示します。ノイズとなる行を除外するのに便利です。

bash grep -v "INFO" app.log | grep "ERROR" この例では、「INFO」を含まない行の中から「ERROR」を含む行を表示します。

  1. 複数のキーワードをOR条件で検索する 複数のエラーレベル(ERROR, FATAL, CRITICAL)を一度に検索するには、拡張正規表現 -E とパイプ | を使います。

bash grep -E "ERROR|FATAL|CRITICAL" app.log または -e オプションを複数回指定する方法もあります。

bash grep -e "ERROR" -e "FATAL" -e "CRITICAL" app.log 7. 正規表現で高度なパターンマッチング ログにはタイムスタンプやIPアドレスなど、特定のパターンが含まれます。-E を使うと、より複雑な条件で絞り込みが可能です。

例:特定の時間帯(10時から11時)に発生したエラーを抽出

bash grep -E "2024-06-15 (10|11):[0-9]{2}:[0-9]{2}.*ERROR" app.log 例:特定のIPアドレスに関連する認証エラーを抽出

bash grep -E "192.168.1.[0-9]{1,3}.*ERROR" /var/log/auth.log 8. リアルタイム監視 (tail -f との連携) tail -f で追跡中のログから、エラーのみをリアルタイムで表示する方法です。

bash tail -f /var/log/syslog | grep --line-buffered "ERROR" --line-buffered オプションにより、grepの出力が即座に表示されるようになります。

  1. 検索結果をファイルに保存する 後で分析するためや、レポート作成のために、検索結果をファイルに出力します。

bash grep -rn "ERROR" /var/log/ > erreurs_$(date +%Y%m%d).txt このコマンドは、erreurs_20260326.txt のようなファイル名で結果を保存します。

  1. grep を awk や cut と組み合わせる より詳細な情報(エラーコードのみ、特定のカラムのみ)を抽出するには、他のテキスト処理コマンドと組み合わせます。

例:タイムスタンプ部分を削除してエラーメッセージのみ表示

bash grep "ERROR" app.log | awk '{$1=""; $2=""; $3=""; print $0}' 例:エラーの種類ごとの発生回数を集計

bash grep -oE "ERROR [A-Z_]+" app.log | sort | uniq -c -o オプションは、マッチした部分のみを出力します。

ボーナス:エイリアスの活用 頻繁に使うコマンドは、.bashrc や .zshrc にエイリアスとして登録しておくと便利です。

bash alias log-errors='grep -E "ERROR|FATAL|CRITICAL"' alias log-watch='tail -f /var/log/syslog | grep --line-buffered -E "ERROR|WARNING"' まとめ grep は、一見シンプルながらも、オプションや他のコマンドとの組み合わせによって無限の可能性を秘めたツールです。本記事で紹介した10の例をマスターすれば、ログ解析の効率が大幅に向上し、障害発生時の平均復旧時間(MTTR)の短縮にも繋がるでしょう。

まずは実際のログファイルで一つずつ試しながら、自分なりの「grep活用術」を磨いてみてください。