grep -Cオプション|一致行の前後をまとめて表示する使い方を初心者向けに詳しく解説!
生徒
「Linuxでgrepを使って検索したときに、該当する行の前後も一緒に見られたら便利なのになぁと思ったんですけど、できますか?」
先生
「はい、できますよ。-Cオプションを使えば、一致した行の前後をまとめて表示することができます。」
生徒
「前も後ろも両方見られるってことですか?」
先生
「その通りです!それではgrep -Cオプションの使い方を丁寧に説明していきましょう。」
1. grepコマンドとは?
grep(グレップ)コマンドは、Linuxでテキストファイルの中から特定のキーワードを含む行を検索するための定番コマンドです。例えば、「error」という文字を含む行を調べたいときに使います。
grep error logfile.txt
このように実行すると、「error」を含む行だけが表示されます。しかし、その行の前後の文脈も見たい場合には、-Cオプションが活躍します。
2. -Cオプションとは?Contextの略で前後を表示
-CはContext(コンテキスト)の略で、一致した行の前後を指定した行数分一緒に表示するためのオプションです。
使い方は以下のようにシンプルです。
grep -C 行数 検索文字列 ファイル名
たとえば、「ERROR」という文字列を含む行と、その前後1行ずつを表示する場合は:
grep -C 1 ERROR logfile.txt
3. grep -Cオプションの実例を見てみよう
次のようなlogfile.txtの内容があるとします:
cat logfile.txt
INFO: サーバー起動中
INFO: 認証処理開始
ERROR: ユーザー認証失敗
INFO: 再試行中
INFO: 認証成功
この中から「ERROR」が含まれる行と、その前後1行を表示したい場合、次のように実行します:
grep -C 1 ERROR logfile.txt
INFO: 認証処理開始
ERROR: ユーザー認証失敗
INFO: 再試行中
このように、前後の行も表示されるため、エラーが起きた「前の状態」や「その後の対応」を確認することができます。
4. 複数の一致があった場合の動きと「--」の意味
-Cオプションで検索した結果、複数の一致があると、それぞれのブロックの間に--(ハイフン2つ)が表示されます。
grep -C 1 WARNING logfile.txt
INFO: データ取得開始
WARNING: レスポンス遅延
INFO: リトライ中
--
INFO: 認証開始
WARNING: パスワード試行回数超過
INFO: ロック処理実行
この--は、どこで検索結果の区切りがあるかを示してくれるため、内容を見やすく整理してくれます。
5. 他のオプションとの違い|-Aや-Bとの比較
grepコマンドには、-C以外にも以下のようなオプションがあります。
-A 行数:Afterの略。一致行の後ろを表示-B 行数:Beforeの略。一致行の前を表示-C 行数:Contextの略。一致行の前後を表示
つまり、-Aと-Bの組み合わせを1つでできるのが-Cというわけです。
6. grep -Cの応用例|ログ解析やエラーチェックに便利
grep -Cは、特にログファイルの解析やトラブルシューティングで威力を発揮します。エラーが出た前後の処理を把握したいときや、警告が出たときの流れを知りたいときに便利です。
たとえば、次のようなログがあるとします:
cat system.log
INFO: プログラム開始
INFO: 初期化完了
WARNING: CPU使用率が高い
INFO: 通常処理実行中
ERROR: 処理中に例外発生
INFO: 後処理実行
「ERROR」が含まれる行と、その前後2行を確認したい場合は:
grep -C 2 ERROR system.log
INFO: 初期化完了
WARNING: CPU使用率が高い
INFO: 通常処理実行中
ERROR: 処理中に例外発生
INFO: 後処理実行
このように、エラーが起きる前後の処理の流れが丸ごと見えるので、原因特定や対応策を考えるのにとても役立ちます。