grep -cオプションの使い方を完全ガイド!Linuxで一致した行数をカウントする方法
生徒
「先生、grepコマンドで特定の文字列を検索できるのは分かりました。でも、見つかった行が何行あるか数えるにはどうしたらいいんですか?」
先生
「それなら-cオプションを使うといいよ。指定したキーワードに一致した行数を数えてくれる便利な機能なんだ。」
生徒
「なるほど!grepって検索だけじゃなくて、カウントもできるんですね!」
先生
「そうなんだよ。ログファイルの分析や、どのくらいエラーが発生してるか調べたいときに便利なんだ。使い方を詳しく見ていこうか。」
1. grep -cオプションとは?
grep -cは、Linuxでファイルの中から特定の文字列を含む行の数をカウントするためのオプションです。
つまり、「そのキーワードが何回出てきたか」ではなく、「そのキーワードを含む行が何行あるか」を数える機能です。
2. grep -cの基本的な使い方
たとえば、「log.txt」ファイルの中から「エラー」という文字列が含まれる行数を知りたい場合、次のように入力します。
grep -c エラー log.txt
5
この出力結果「5」は、「エラー」という言葉を含む行が5行あったことを意味します。
3. grep -cと通常のgrepの違い
通常のgrepでは、一致した行そのものが表示されます。
grep エラー log.txt
2025-09-14 エラー発生
2025-09-15 エラーコード: 500
2025-09-16 エラー処理開始
しかし-cを付ければ、出力は数字だけ。どのような内容の行かではなく、「行数だけ知りたい」ときに便利です。
4. grep -cの実用例
- ログファイルでエラー発生回数を数える
- 設定ファイルで特定の項目が何回使われているか確認する
- メール本文の中にあるキーワードの出現行数をチェックする
たとえば、Webサーバーのログに含まれる「404 Not Found」の発生行数を調べたい場合は以下のようにします。
grep -c "404 Not Found" access.log
12
5. 複数ファイルに対してgrep -cを使う
grep -cは、複数のファイルにまたがって使うこともできます。
grep -c エラー log1.txt log2.txt
log1.txt:3
log2.txt:7
このように、各ファイルごとの一致行数が表示されて非常に分かりやすくなります。
6. grep -ciで大文字小文字を無視してカウント
「Error」「ERROR」「error」などのように、大文字と小文字が混在している場合は、-iオプションを併用します。
grep -ci error log.txt
10
これにより、「Error」や「ERROR」などもすべてカウント対象になります。
7. grep -cvで除外した行数をカウント
逆に、あるキーワードを含まない行の数を知りたいときは、-v(除外)と一緒に使います。
grep -cv エラー log.txt
95
この場合、「エラー」が含まれていない行が95行あることがわかります。
8. wc -lとの違い
似たようなことをするコマンドにwc -lがあります。これは行数をカウントするコマンドです。
しかし、grep -cは条件に一致した行だけを数えるので、目的に応じて使い分けましょう。
grep エラー log.txt | wc -l
5
これはgrep -c エラー log.txtと同じ結果になります。
9. grep -cの注意点
- キーワードが1行に複数回登場しても「1行」としてカウントされる
- あくまで行単位で数える点を理解しておく
- 複雑なパターンを使いたいときは、正規表現を活用するとより柔軟に対応できる
例えば、1行に「エラー」という単語が2回出ていても、grep -cはその行を「1行」としてカウントします。