【ぐれっぷ】

grep とは?

💡 テキストから「欲しい行だけ」を探し出すLinuxの定番検索コマンド
📌 このページのポイント
grep:パターンに一致する行を検索 $ grep "error" server.log server.log INFO: 起動完了 ERROR: 接続エラー発生 INFO: リクエスト処理 WARN: メモリ使用量高 ERROR: タイムアウト INFO: 処理完了 抽出 マッチした行 ERROR: 接続エラー発生 ERROR: タイムアウト 正規表現も使用可能 -i:大文字小文字無視 -r:再帰検索
grepのイメージ
ひよこ ひよこ

grepってどう使うの?

ペンギン先生 ペンギン先生

基本は「grep 'エラー' logfile.txt」で、logfile.txtの中から「エラー」を含む行だけ表示する。「grep -r 'password' ./src」でsrcディレクトリ以下のファイルを再帰的に検索してpasswordを含む行を全部見つけられる。

ひよこ ひよこ

パイプとの組み合わせって?

ペンギン先生 ペンギン先生

ps aux | grep nginx」でプロセス一覧からnginxを含む行だけ抽出。「cat access.log | grep 'ERROR'」でアクセスログのエラー行だけ見る。こういう使い方が非常に多い。

ひよこ ひよこ

正規表現も使えるの?

ペンギン先生 ペンギン先生

使える。「grep -E '2024-[0-9]{2}-[0-9]{2}' access.log」で日付パターンの行を検索できる。-Eオプションで拡張正規表現を有効にする。さらに強力なripgrep(rg)というツールも最近は人気。

ひよこ ひよこ

grepが遅いときってどうすればいいの?

ペンギン先生 ペンギン先生

まず-Fオプション(固定文字列検索)を試す。正規表現を使わないなら-Fの方が高速。あとは-lオプション(ファイル名だけ表示)で出力を減らす、--include='*.py'で検索対象のファイルを絞るなどの方法がある。それでも遅ければripgrep(rg)に乗り換えるのがおすすめ。

ひよこ ひよこ

ripgrepってgrepと何が違うの?

ペンギン先生 ペンギン先生

Rust言語で書かれた高速版grepだよ。デフォルトで.gitignoreを尊重してくれるし、再帰検索も自動、マルチスレッドで並列処理するから大規模リポジトリでも爆速。VSCodeの検索機能も内部でripgrepを使っているんだ。grepの基本的な使い方を覚えたら、実務ではrgをメインにするエンジニアが増えているよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
grepって出てきたら「ファイルや出力から特定パターンに一致する行を探すLinuxコマンド」と思えばOK!
📖 おまけ:英語の意味
「grep」 = Global Regular Expression Print
💬 edエディタのコマンド「g/re/p(正規表現でグローバルに探してプリントする)」から来た言葉。1973年にKen Thompson(UNIXの生みの親)が作成した
← 用語集にもどる