grep – テキスト検索を行うコマンド

検索・フィルタ
スポンサーリンク

grep コマンドは、指定したパターン(文字列や正規表現)をファイルや標準入力から検索し、該当する行を表示するコマンドです。
実務では、ログファイルからエラーメッセージを抽出したり、設定ファイルの特定行を探す際に利用されます。

構文(Syntax)

grep [オプション] PATTERN [FILE...]

主なオプション一覧

オプション説明使用例
-i大文字・小文字を区別せず検索grep -i error /var/log/syslog
-vマッチしない行を表示(否定検索)grep -v INFO /var/log/syslog
-n行番号を表示grep -n main program.c
-rディレクトリを再帰的に検索grep -r TODO src/
-lマッチしたファイル名のみ表示grep -l TODO *.c
-cマッチした行数を表示grep -c ERROR /var/log/syslog
-E拡張正規表現(egrep と同等)を使用`grep -E “foo
-w単語単位で一致grep -w cat animals.txt
-A NUMマッチ行の後ろに NUM 行も表示grep -A 2 ERROR /var/log/syslog
-B NUMマッチ行の前に NUM 行も表示grep -B 2 ERROR /var/log/syslog
-C NUMマッチ行の前後 NUM 行も表示grep -C 3 ERROR /var/log/syslog

実行例

ファイルから文字列を検索

grep "ERROR" /var/log/syslog

出力例:

Aug 21 10:00 server app[1234]: ERROR: Failed to start service

行番号を付けて検索

grep -n "main" program.c

出力例:

42:int main(int argc, char *argv[]) {

大文字小文字を区別せず検索

grep -i "warning" messages.log

複数ファイルを検索

grep "TODO" *.c

出力例:

main.c:10:// TODO: refactor this function
util.c:25:// TODO: add error handling

前後の行も含めて表示

grep -C 2 "ERROR" /var/log/syslog

出力例:

Aug 21 09:59 server app[1234]: Starting service
Aug 21 10:00 server app[1234]: ERROR: Failed to start service
Aug 21 10:00 server app[1234]: Service stopped

ディレクトリを再帰的に検索

grep -r "config" /etc/

エラー例(存在しないファイル)

grep "ERROR" missing.log

出力例:

grep: missing.log: No such file or directory

関連コマンド

  • egrep : grep -E と同等(拡張正規表現)
  • fgrep : grep -F と同等(正規表現を使わず文字列検索)
  • sed : テキストの置換や加工に利用
  • awk : テキスト処理や抽出に利用

関連

備考

  • 検索対象は標準入力でも指定可能(例: dmesg | grep usb)。
  • grep はシンプルな検索に向き、複雑な処理は awksed と組み合わせることが多いです。
  • GNU grep と BSD grep ではオプションの一部挙動が異なる場合があります。

参考

スポンサーリンク
Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント