クリップボードにコピーしました!
文字列のgrep

grepのコンテキスト活用法を徹底解説

updated: 2026/06/10 created: 2026/06/10

はじめに

grepはLinuxやUnix環境で文字列検索を行う代表的なコマンドです。

しかし、一致した行だけを確認していると前後の状況が分からず、原因調査に時間がかかることがあります。

そこで役立つのがコンテキスト表示機能です。

本記事では、grepのコンテキストの基本から、-A・-B・-Cオプションの使い方、行番号やカラー表示との組み合わせ、ログ解析やパフォーマンス改善まで幅広く解説します

参考: GNU grep

grepのコンテキストの基本

ファイル作成

cat << 'EOF' > input.txt error: connection failed info: retry started warning: timeout detected error: authentication failed info: process completed EOF

実行コマンド

grep -C 1 "error" input.txt

実行結果

error: connection failed
info: retry started
warning: timeout detected
error: authentication failed
info: process completed

実行コマンド

grep -B 1 "error" input.txt

実行結果

error: connection failed
--
warning: timeout detected
error: authentication failed

実行コマンド

grep -A 1 "error" input.txt

実行結果

error: connection failed
info: retry started
--
error: authentication failed
info: process completed

仕組み

オプション 意味
-C N マッチした行の前後N行を表示 grep -C 1 "error" input.txt
-B N マッチした行の前N行を表示 grep -B 1 "error" input.txt
-A N マッチした行の後N行を表示 grep -A 1 "error" input.txt
-- 離れたコンテキストを区切る行 -A や -C 使用時に表示

解説

grepのコンテキスト機能を使うと、検索キーワードに一致した行だけでなく前後の関連行も確認できます。
ログ解析や設定ファイルの調査で特に便利です。

grepのコンテキストを表示する -A オプションの使い方

ファイル作成

cat << 'EOF' > input.txt INFO: Application started INFO: Loading configuration ERROR: Database connection failed INFO: Retrying connection INFO: Connection retry failed WARN: Switching to fallback mode INFO: Fallback mode enabled ERROR: Cache server unavailable INFO: Processing request INFO: Request completed EOF

実行コマンド

grep -A 2 "ERROR" input.txt

実行結果

ERROR: Database connection failed
INFO: Retrying connection
INFO: Connection retry failed
--
ERROR: Cache server unavailable
INFO: Processing request
INFO: Request completed

仕組み

項目 内容
grep パターンに一致する行を検索するコマンド
-A 2 一致した行の後ろ(After)2行を表示する
コンテキスト 一致行の前後にある関連情報
-- 複数のマッチ結果を区切るセパレータ
利用場面 エラーログ発生後の処理内容を確認する場合など

解説

-A オプションを使用すると、一致した行だけでなく後続の関連ログも確認できます。

ログ解析や障害調査で前後関係を把握したい場合に便利です。

grepのコンテキストを表示する -B オプションの使い方

ファイル作成

cat << 'EOF' > input.txt ERROR: Connection failed INFO: Retrying connection WARN: Slow response detected ERROR: Authentication failed INFO: User logged in ERROR: Database timeout INFO: Process completed EOF

実行コマンド

grep -B 2 "ERROR" input.txt

実行結果

ERROR: Connection failed
INFO: Retrying connection
WARN: Slow response detected
ERROR: Authentication failed
INFO: User logged in
ERROR: Database timeout

仕組み

項目 内容
grep 指定した文字列を検索するコマンド
-B 2 マッチした行の前にある2行をコンテキストとして表示
"ERROR" 検索対象の文字列
input.txt 検索対象のファイル
-- 複数の検索結果を区切るためのセパレータ

解説

grep -B オプションを使用すると、検索結果の前後関係を確認できます。
ログ解析などでエラー発生前の状況を調査する際に便利な grep コンテキスト表示機能です。

grepのコンテキストを表示する -C オプションの使い方

ファイル作成

cat << 'EOF' > input.txt 001: start 002: initialize 003: load config 004: connect database 005: authentication 006: search target 007: fetch records 008: process data 009: save result 010: end EOF

実行コマンド

grep -C 2 "search target" input.txt

実行結果

004: connect database
005: authentication
006: search target
007: fetch records
008: process data

実行コマンド

grep -C 1 "search target" input.txt

実行結果

005: authentication
006: search target
007: fetch records

実行コマンド

grep -C 3 "search target" input.txt

実行結果

003: load config
004: connect database
005: authentication
006: search target
007: fetch records
008: process data
009: save result

仕組み

項目 内容
grep 指定した文字列を検索するコマンド
-C N 一致した行の前後 N 行を表示する
一致行 検索キーワードを含む行
前後の行 コンテキスト(文脈)として表示される行
用途 ログ解析や設定ファイル確認時に周辺情報を同時に確認できる

解説

grep -C オプションを使用すると、一致した行だけでなく前後の関連行も確認できます。

ログや設定ファイルの調査で、検索結果の文脈を把握したい場合に便利です。

grepのコンテキストの指定行数を変更して前後の表示範囲を調整する方法

ファイル作成

cat << 'EOF' > input.txt INFO: application started INFO: loading configuration ERROR: database connection failed INFO: retrying connection INFO: retry attempt 1 INFO: retry attempt 2 ERROR: database connection failed INFO: sending alert INFO: application stopped EOF

実行コマンド

grep -C 1 "ERROR" input.txt

実行結果

INFO: loading configuration
ERROR: database connection failed
INFO: retrying connection
--
INFO: retry attempt 2
ERROR: database connection failed
INFO: sending alert

実行コマンド

grep -C 2 "ERROR" input.txt

実行結果

INFO: application started
INFO: loading configuration
ERROR: database connection failed
INFO: retrying connection
INFO: retry attempt 1
INFO: retry attempt 2
ERROR: database connection failed
INFO: sending alert
INFO: application stopped

実行コマンド

grep -B 2 "ERROR" input.txt

実行結果

INFO: application started
INFO: loading configuration
ERROR: database connection failed
--
INFO: retry attempt 1
INFO: retry attempt 2
ERROR: database connection failed

実行コマンド

grep -A 2 "ERROR" input.txt

実行結果

ERROR: database connection failed
INFO: retrying connection
INFO: retry attempt 1
--
ERROR: database connection failed
INFO: sending alert
INFO: application stopped

仕組み

オプション 意味 表示内容
-C N 前後N行を表示 grep -C 2 "ERROR" input.txt 一致行の前後2行
-B N 一致行の前N行を表示 grep -B 2 "ERROR" input.txt 一致行の前2行
-A N 一致行の後N行を表示 grep -A 2 "ERROR" input.txt 一致行の後2行

解説

grep のコンテキスト表示は -C、-B、-A オプションで行数を変更できます。
ログ解析時に前後の状況を確認したい場合に便利です。

grepのコンテキストと行番号を同時に表示する方法

ファイル作成

cat << 'EOF' > input.txt INFO: Start application DEBUG: Load config ERROR: Connection failed INFO: Retry connection ERROR: Timeout occurred INFO: End application EOF

実行コマンド

grep -n -C 1 "ERROR" input.txt

実行結果

2-DEBUG: Load config
3:ERROR: Connection failed
4-INFO: Retry connection
5:ERROR: Timeout occurred
6-INFO: End application

実行コマンド

grep -n -B 1 -A 2 "ERROR" input.txt

実行結果

2-DEBUG: Load config
3:ERROR: Connection failed
4-INFO: Retry connection
5:ERROR: Timeout occurred
6-INFO: End application

仕組み

オプション 説明
-n 一致した行の行番号を表示する
-C N 前後 N 行のコンテキストを表示する
-B N 一致行の前 N 行を表示する
-A N 一致行の後 N 行を表示する
-- 離れたマッチ結果同士の区切りを表示する

解説

grepでは-nと-Cを組み合わせることで、行番号とコンテキストを同時に確認できます。
障害調査やログ解析で、マッチした行の前後関係を素早く把握したい場合に便利です。

grepのコンテキスト検索で一致行のみを強調表示する方法

ファイル作成

cat << 'EOF' > input.txt INFO: application started ERROR: database connection failed INFO: retrying connection INFO: connection established ERROR: timeout occurred INFO: application finished EOF

実行コマンド

grep --color=always -C 1 "ERROR" input.txt

実行結果

INFO: application started
ERROR: database connection failed
INFO: retrying connection
INFO: connection established
ERROR: timeout occurred
INFO: application finished

実行コマンド

grep --color=always -B 1 -A 1 "ERROR" input.txt

実行結果

INFO: application started
ERROR: database connection failed
INFO: retrying connection
INFO: connection established
ERROR: timeout occurred
INFO: application finished

仕組み

オプション 説明
--color=always 一致した文字列のみを色付きで強調表示する
-C 1 一致行の前後1行をコンテキストとして表示する
-B 1 一致行の前1行を表示する
-A 1 一致行の後1行を表示する
"ERROR" 検索対象の文字列
input.txt 検索対象ファイル

解説

grepのコンテキスト検索では、-C や -A -B を利用して前後の行を表示できます。
--color=always を併用すると、コンテキスト行はそのまま表示しつつ、一致行内の一致文字列のみを強調表示できます。

grepのコンテキストとカラー表示を組み合わせて可読性を高める方法

ファイル作成

cat << 'EOF' > input.txt [INFO] Application started [INFO] Loading configuration [WARN] Deprecated setting detected [INFO] Connecting to database [ERROR] Database connection failed [INFO] Retrying connection [INFO] Connecting to database [ERROR] Authentication failed [INFO] Sending alert [INFO] Application terminated EOF

実行コマンド

grep --color=always -C 2 "ERROR" input.txt

実行結果

[WARN] Deprecated setting detected
[INFO] Connecting to database
[ERROR] Database connection failed
[INFO] Retrying connection
[INFO] Connecting to database
[ERROR] Authentication failed
[INFO] Sending alert
[INFO] Application terminated

実行コマンド

grep --color=always -B 2 -A 1 "ERROR" input.txt

実行結果

[WARN] Deprecated setting detected
[INFO] Connecting to database
[ERROR] Database connection failed
[INFO] Retrying connection
[INFO] Connecting to database
[ERROR] Authentication failed
[INFO] Sending alert

仕組み

オプション 説明
--color=always 検索キーワードを色付けして強調表示する
-C 2 一致行の前後2行を表示する
-B 2 一致行の前2行を表示する
-A 1 一致行の後1行を表示する
"ERROR" 検索対象の文字列
input.txt 検索対象ファイル

解説

grep のコンテキスト表示を利用すると、エラー発生箇所の前後の流れをまとめて確認できます。
--color を組み合わせることで一致した行が強調表示され、ログ解析の可読性が向上します。

grepのコンテキストを複数キーワード検索と組み合わせる方法

ファイル作成

cat << 'EOF' > input.txt 2024-01-01 INFO Application started 2024-01-01 ERROR Database connection failed 2024-01-01 INFO Retry database connection 2024-01-01 WARN Database response slow 2024-01-01 ERROR User authentication failed 2024-01-01 INFO User retry login 2024-01-01 ERROR Database timeout occurred 2024-01-01 INFO Service stopped EOF

実行コマンド

grep -E -B 1 -A 1 'ERROR.*Database|Database.*ERROR' input.txt

実行結果

2024-01-01 INFO Application started
2024-01-01 ERROR Database connection failed
2024-01-01 INFO Retry database connection
--
2024-01-01 INFO User retry login
2024-01-01 ERROR Database timeout occurred
2024-01-01 INFO Service stopped

実行コマンド

grep -E -C 1 'ERROR.*Database|Database.*ERROR' input.txt

実行結果

2024-01-01 INFO Application started
2024-01-01 ERROR Database connection failed
2024-01-01 INFO Retry database connection
--
2024-01-01 INFO User retry login
2024-01-01 ERROR Database timeout occurred
2024-01-01 INFO Service stopped

仕組み

項目 内容
grep テキストから条件に一致する行を検索する
-E 拡張正規表現を有効化する
ERROR.*Database|Database.*ERROR ERROR と Database を含む行を検索する
-A 1 一致行の後ろ1行を表示する
-B 1 一致行の前1行を表示する
-C 1 一致行の前後1行をまとめて表示する
-- 離れた検索結果の区切りを示す

解説

grepのコンテキストオプション(-A、-B、-C)は、複数キーワード検索と組み合わせることで、ヒットした行の前後関係を確認できます。

ログ解析時にエラー発生前後の状況を効率よく調査できます。

grepのコンテキストを正規表現検索で活用する方法

ファイル作成

cat << 'EOF' > input.txt INFO: Application started DEBUG: Loading configuration ERROR: Database connection failed DEBUG: Retrying connection INFO: Retry attempt 1 ERROR: Authentication failed DEBUG: Sending alert INFO: Application stopped EOF

実行コマンド

grep -E -B 1 -A 2 'ERROR|Authentication' input.txt

実行結果

DEBUG: Loading configuration
ERROR: Database connection failed
DEBUG: Retrying connection
INFO: Retry attempt 1
ERROR: Authentication failed
DEBUG: Sending alert
INFO: Application stopped

実行コマンド

grep -E -C 1 'ERROR.*failed' input.txt

実行結果

DEBUG: Loading configuration
ERROR: Database connection failed
DEBUG: Retrying connection
INFO: Retry attempt 1
ERROR: Authentication failed
DEBUG: Sending alert

仕組み

オプション 役割 grep コンテキストとの関係
-E 拡張正規表現を利用 ERROR|Authentication や ERROR.*failed を記述可能
-A n マッチ後の n 行を表示 後続処理の状況確認に利用
-B n マッチ前の n 行を表示 エラー発生前の状況確認に利用
-C n 前後 n 行を表示 周辺情報をまとめて確認
ERROR.*failed 正規表現検索 ERROR と failed の間に任意文字列があっても一致

解説

grep コンテキスト オプション(-A、-B、-C)を利用すると、正規表現でヒットした行だけでなく前後の関連ログも確認できます。障害解析やログ調査で原因と影響範囲を素早く把握する際に有効です。

grepのコンテキスト表示時に不要な行を除外する方法

ファイル作成

cat << 'EOF' > input.txt INFO start ERROR database connection failed detail retry=1 detail retry=2 INFO healthcheck ERROR disk full detail path=/data INFO end EOF

実行コマンド

grep -A2 "ERROR" input.txt

実行結果

ERROR database connection failed
detail retry=1
detail retry=2
--
ERROR disk full
detail path=/data
INFO end

実行コマンド

grep -A2 "ERROR" input.txt | grep -v '^--$'

実行結果

ERROR database connection failed
detail retry=1
detail retry=2
ERROR disk full
detail path=/data
INFO end

仕組み

項目 内容
grep -A2 マッチした行の後ろ2行をコンテキストとして表示する
-- 複数のマッチ結果の区切りとして grep が自動出力する
grep -v '^--$' 区切り行 -- のみを除外する
-v パターンに一致した行を除外して表示する
^--$ 行全体が -- の場合のみ一致する正規表現

解説

grep のコンテキスト表示(-A、-B、-C)では、結果グループ間に区切り行 -- が出力されます。
不要な場合は grep -v '^--$' をパイプで組み合わせることで簡単に除外できます。

grepのコンテキストをパイプ処理で活用する方法

ファイル作成

cat << 'EOF' > input.txt INFO: application start INFO: loading config ERROR: database connection failed INFO: retrying connection INFO: connection established WARN: high memory usage ERROR: timeout occurred INFO: request completed EOF

実行コマンド

grep -A2 "ERROR" input.txt | grep "INFO"

実行結果

INFO: retrying connection
INFO: connection established
INFO: request completed

仕組み

項目 内容
grep -A2 "ERROR" ERRORに一致した行と後続2行をコンテキストとして出力する
パイプ(|) 前段のgrep結果を後段のgrepへ渡す
grep "INFO" コンテキスト内からINFOを含む行のみ抽出する
活用例 エラー発生前後のログから関連する情報だけを絞り込める

解説

grepのコンテキストオプション(-A、-B、-C)をパイプ処理と組み合わせることで、前後関係を保持したまま必要な情報だけを抽出できます。
ログ解析や障害調査で特に有効な手法です。

grepのコンテキストと tail を組み合わせてリアルタイムログを監視する方法

ファイル作成

cat << 'EOF' > input.txt 2026-06-05 10:00:01 INFO Application started 2026-06-05 10:00:02 INFO Loading configuration 2026-06-05 10:00:03 ERROR Database connection failed 2026-06-05 10:00:04 INFO Retrying connection 2026-06-05 10:00:05 INFO Connection established 2026-06-05 10:00:06 WARN High memory usage 2026-06-05 10:00:07 ERROR API timeout 2026-06-05 10:00:08 INFO Request completed EOF

実行コマンド

tail -f input.txt | grep -A 1 -B 1 "ERROR"

実行結果

2026-06-05 10:00:02 INFO Loading configuration
2026-06-05 10:00:03 ERROR Database connection failed
2026-06-05 10:00:04 INFO Retrying connection
--
2026-06-05 10:00:06 WARN High memory usage
2026-06-05 10:00:07 ERROR API timeout
2026-06-05 10:00:08 INFO Request completed

仕組み

項目 内容
tail -f ファイルの追記をリアルタイムで監視する
grep 指定した文字列(ERROR)を抽出する
-B 1 マッチした行の1行前を表示する
-A 1 マッチした行の1行後を表示する
grep コンテキスト エラー発生前後の状況を同時に確認できる
組み合わせ効果 ログ追記を監視しながらエラーとその前後の文脈をリアルタイム表示できる

解説

tail -f と grep のコンテキストオプション(-A、-B)を組み合わせることで、エラー行だけでなく前後の関連ログも確認できます。

リアルタイム監視時の原因調査や障害解析でよく利用される方法です。

grepのコンテキストからエラーログの原因箇所を特定する方法

ファイル作成

cat << 'EOF' > input.txt 2026-06-05 10:00:01 INFO Application started 2026-06-05 10:00:05 INFO Connecting to database 2026-06-05 10:00:08 WARN Connection timeout detected 2026-06-05 10:00:09 ERROR Database connection failed 2026-06-05 10:00:10 ERROR Retry process started 2026-06-05 10:00:12 INFO Retry succeeded 2026-06-05 10:00:15 INFO Processing request EOF

実行コマンド

grep -C 2 "ERROR" input.txt

実行結果

2026-06-05 10:00:05 INFO Connecting to database
2026-06-05 10:00:08 WARN Connection timeout detected
2026-06-05 10:00:09 ERROR Database connection failed
2026-06-05 10:00:10 ERROR Retry process started
2026-06-05 10:00:12 INFO Retry succeeded
2026-06-05 10:00:15 INFO Processing request

実行コマンド

grep -B 2 "ERROR" input.txt

実行結果

2026-06-05 10:00:05 INFO Connecting to database
2026-06-05 10:00:08 WARN Connection timeout detected
2026-06-05 10:00:09 ERROR Database connection failed
2026-06-05 10:00:10 ERROR Retry process started

実行コマンド

grep -A 2 "ERROR" input.txt

実行結果

2026-06-05 10:00:09 ERROR Database connection failed
2026-06-05 10:00:10 ERROR Retry process started
2026-06-05 10:00:12 INFO Retry succeeded
2026-06-05 10:00:15 INFO Processing request

仕組み

オプション 意味 用途
-C 2 前後2行を表示 エラー発生前後の流れを確認
-B 2 前2行を表示 エラー原因となった処理を特定
-A 2 後2行を表示 エラー後の影響や復旧処理を確認
"ERROR" 検索パターン エラーログのみ抽出

解説

grepのコンテキストオプション(-A、-B、-C)を利用すると、エラー行だけでなく前後の関連ログも確認できます。

grepのコンテキストを大容量ログ解析で活用する方法

ファイル作成

cat << 'EOF' > input.txt 2026-06-01 10:00:01 INFO Application started 2026-06-01 10:00:05 INFO Loading configuration 2026-06-01 10:00:08 WARN Response time exceeded threshold 2026-06-01 10:00:10 INFO Health check passed 2026-06-01 10:00:15 ERROR Database connection timeout 2026-06-01 10:00:18 INFO Retrying connection 2026-06-01 10:00:22 ERROR Database connection timeout 2026-06-01 10:00:25 INFO Retrying connection 2026-06-01 10:00:30 INFO Connection established 2026-06-01 10:00:35 INFO Processing requests EOF

実行コマンド

grep -C 2 "ERROR" input.txt

実行結果

2026-06-01 10:00:08 WARN Response time exceeded threshold
2026-06-01 10:00:10 INFO Health check passed
2026-06-01 10:00:15 ERROR Database connection timeout
2026-06-01 10:00:18 INFO Retrying connection
2026-06-01 10:00:22 ERROR Database connection timeout
2026-06-01 10:00:25 INFO Retrying connection
2026-06-01 10:00:30 INFO Connection established

実行コマンド

grep -B 3 "ERROR" input.txt

実行結果

2026-06-01 10:00:05 INFO Loading configuration
2026-06-01 10:00:08 WARN Response time exceeded threshold
2026-06-01 10:00:10 INFO Health check passed
2026-06-01 10:00:15 ERROR Database connection timeout
2026-06-01 10:00:18 INFO Retrying connection
2026-06-01 10:00:22 ERROR Database connection timeout

実行コマンド

grep -A 2 "ERROR" input.txt

実行結果

2026-06-01 10:00:15 ERROR Database connection timeout
2026-06-01 10:00:18 INFO Retrying connection
2026-06-01 10:00:22 ERROR Database connection timeout
2026-06-01 10:00:25 INFO Retrying connection
2026-06-01 10:00:30 INFO Connection established

仕組み

オプション 名称 仕組み 活用例
-C N 前後コンテキスト マッチ行の前後N行を表示 エラー発生前後の流れを確認
-B N Before マッチ行の前N行を表示 障害発生要因の調査
-A N After マッチ行の後N行を表示 エラー後のリトライや復旧処理の確認

解説

大容量ログ解析では、単純なエラー抽出だけでなくコンテキスト表示を組み合わせることで原因と影響範囲を効率的に把握できます。

grep コンテキスト を活用すると、追加のログ閲覧コマンドを使わずに前後関係まで確認できます。

grepのコンテキスト検索時のパフォーマンスを改善する方法

ファイル作成

cat << 'EOF' > input.txt INFO start process INFO connect database ERROR timeout occurred INFO retry connection INFO connect database ERROR authentication failed INFO shutdown process EOF

実行コマンド

LC_ALL=C grep -n -C 1 "ERROR" input.txt

実行結果

2-INFO connect database
3:ERROR timeout occurred
4-INFO retry connection
5-INFO connect database
6:ERROR authentication failed
7-INFO shutdown process

実行コマンド

LC_ALL=C grep -F -n -C 1 "ERROR" input.txt

実行結果

2-INFO connect database
3:ERROR timeout occurred
4-INFO retry connection
5-INFO connect database
6:ERROR authentication failed
7-INFO shutdown process

実行コマンド

LC_ALL=C grep -F -n -A 1 -B 1 "ERROR" input.txt

実行結果

2-INFO connect database
3:ERROR timeout occurred
4-INFO retry connection
5-INFO connect database
6:ERROR authentication failed
7-INFO shutdown process

仕組み

項目 仕組み 効果
LC_ALL=C ロケール判定を単純化しバイト単位で検索 文字処理負荷を削減
-F 正規表現エンジンを使わず固定文字列検索 検索速度向上
-C 1 前後1行のコンテキストを一括取得 ログ解析効率向上
-A -B 前後行数を個別指定 必要最小限の出力で処理量削減
-n 行番号を付与 該当箇所の特定を高速化

解説

grep のコンテキスト検索では、固定文字列なら -F を利用し、LC_ALL=C を組み合わせることで大規模ログでも高速に検索できます。

コンテキスト行数も必要最小限にすることで出力量と処理負荷を抑えられます。

grepのコンテキスト活用のポイントまとめ

grepのコンテキスト機能を活用すると、一致行だけでは見えない前後関係を把握できるようになります。

-A、-B、-Cオプションを使い分けることで必要な情報を効率よく取得でき、行番号表示やカラー表示を組み合わせれば可読性も向上します。

grepのコンテキスト機能を理解しておくことで、日常的なログ確認から大規模な障害調査まで、より迅速かつ正確な作業が行えるようになります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

©︎ 2025-2026 running terminal commands