メインコンテンツへスキップ

grepコマンドの使い方

🧩はじめに

grepはUNIX系システムで定番のテキスト検索ツールで、ログ調査や設定ファイルの解析など、日々の業務や開発で活躍します。本記事では、基本的な使い方から正規表現や複数条件のor検索、さらにパイプを使ったフィルタ処理の実践例まで、現場で即使えるテクニックを紹介します。


🔍基本のgrepの使い方

grep [検索パターン] [ファイル名]

例:

grep error /var/log/syslog

syslogの中から「error」を含む行を抽出。


📐正規表現の使い方

🧵基本正規表現(BRE)

grepはデフォルトで基本正規表現を使います:

  • ^:行頭

  • $:行末

  • .:任意の1文字

  • .*:任意の文字列(0回以上の繰り返し)

  • [a-z]:a〜zの1文字

例:

grep "^start.*end$" text.txt

→「start」で始まり「end」で終わる行。

*?をそのまま使うときはエスケープが必要になるケースがあります。


🧵拡張正規表現(ERE)

オプション -E または egrep で使います。

  • |:OR条件

  • +:1回以上の繰り返し

  • ?:0回または1回

grep -E "error|fail|warn" log.txt

🔗複数条件(OR検索)

|を使う(拡張正規表現)

grep -E "apple|banana|grape" fruits.txt

-eオプションを複数使用

grep -e apple -e banana -e grape fruits.txt

🎯パイプでつなげてフィルタ+ファイル保存

UNIXの強みはコマンド同士をつなげるパイプ処理にあります。grepはその代表的な使い方に最適です。

🔧例:dmesg出力をgrepでフィルタして保存

dmesg | grep -i usb > usb.log
  • dmesg:カーネルログを出力

  • grep -i usb:USB関連の行を抽出(大文字小文字を無視)

  • > usb.log:結果をファイルに保存

🔧例:プロセス一覧からpythonを含む行を抽出して保存

ps aux | grep python > python_procs.txt

🧰よく使うオプションまとめ

オプション 内容
-i 大文字小文字を無視
-v マッチしない行を出力
-n 行番号を表示
-r ディレクトリを再帰的に検索
-l 一致するファイル名のみを出力
-c 一致した行数だけを表示
-o 一致部分だけを抽出
-E 拡張正規表現を使用
-e 複数パターンの指定
--color 該当部分に色をつけて表示

💡ヒント:色付き表示で視認性アップ

grep --color=auto "pattern" file.txt

ハイライト表示で見やすく。エイリアスに登録するのもおすすめ:

alias grep='grep --color=auto'

🏁まとめ

grepはシンプルながら、正規表現やパイプと組み合わせることで非常に強力なツールになります。特にUNIX的な「コマンドをつなぐ文化」において、grepフィルタ処理の要です。普段の作業でも、ログ調査やテキスト整形の場面で、ぜひ活用してみてください。

特に、他コマンドの出力 → grepで絞る → 結果を保存という流れは、日々の調査やログ解析で極めて実用的です。慣れておくと業務効率が一段と向上します。