grepコマンドとは?ログ調査やファイル検索の実践的な使い方を解説
Linuxの検索コマンド「grep」の基礎から、正規表現を使った高度な検索、実務でのログ調査テクニックまで詳しく解説します。
grepコマンドとは?
grep(グレップ)は、テキストファイルの中から特定の文字列(パターン)が含まれる行を検索して表示するための強力なLinuxコマンドです。
名前の由来は「g/re/p (Global Regular Expression Print)」から来ており、正規表現(Regular Expression)をネイティブにサポートしています。
主な役割とメリット
巨大なログファイルや膨大なソースコードの中から、目当てのエラーメッセージや変数名を一瞬で見つけ出すことができます。サーバー上にGUIエディタがないCUI環境において、grepはエンジニアの「目」として機能します。
どのような場面で使われるか
Webサーバーのエラー調査、プロセスが起動しているかの確認、特定の設定項目の抽出など、1日に何度も打ち込むことになるコマンドです。
実務でよく使うオプションと組み合わせ
- 大文字小文字を区別しない (
-i):grep -i "error" /var/log/syslog(Error, ERROR, error 全てにヒット) - ディレクトリ内を再帰的に検索 (
-r,-R):grep -r "TODO" ./src(srcディレクトリ以下の全ファイルからTODOを検索) - 検索文字列を含まない行を表示 (
-v):grep -v "INFO" app.log(INFOログを除外し、WARNやERRORだけを表示) - 行番号も一緒に表示 (
-n):grep -n "password" config.php
パイプ (|) との強力な連携
grep単体でファイルに対して実行するだけでなく、他のコマンドの出力を絞り込むのによく使われます。
- プロセスの確認:
ps aux | grep nginx(起動中のプロセス一覧からnginxだけを抽出) - インストール済みパッケージの確認:
dpkg -l | grep curl
実務上の注意点
100GBクラスの巨大なログファイルに対して安易に素のgrepをかけると、サーバーのCPUとメモリを占有してシステム全体が重くなることがあります。その場合は tail で末尾だけを切り出したり、zgrep(圧縮ファイル用)を使うなどの工夫が必要です。
よくあるエラーやトラブルシュート
- 自分自身のgrepプロセスがヒットしてしまう:
ps aux | grep nginxと打つと、grep nginxというコマンド自体もリストに表示されて邪魔になることがあります。 回避策としてps aux | grep [n]ginxのように角括弧を使うテクニックが有名です。
まとめ
grepはインフラエンジニアやプログラマーにとって必須のツールです。オプション(-i, -r, -v)や正規表現と組み合わせることで、どんなに膨大なテキストの海からも瞬時に目的の情報を探し出すことができます。
関連する用語 (linux)
全12件を見るCannot connect to the Docker daemon の原因と解決策
Dockerコマンド実行時に「Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?」と表示されるエラーの直し方を解説します。
tailコマンドとは?リアルタイムなログ監視の実務テクニックを解説
ファイルの末尾を表示する「tail」コマンドについて、-fオプションを使ったリアルタイムなログ監視やエラー調査の基本を解説します。
git rebase と git merge の違い・使い分け
コミット履歴を綺麗に保つための `git rebase` の仕組みと、`merge` との決定的な違い、実務での使い分けについて図解します。
sshコマンドとは?公開鍵認証の仕組みと安全なサーバー接続の実務
Linuxの遠隔操作に必須の「ssh」コマンドについて、公開鍵・秘密鍵を使った安全な接続方法(公開鍵認証)や実務でのポート指定などを解説します。
curlコマンドとは?Web APIのテストやHTTP・JSON通信の実践例
URLを叩いて様々なリクエストを送信できる「curl」コマンドについて、REST APIのテスト(GET/POST)やヘッダー確認などの実務での使い方を解説。
error: failed to push some refs to の原因
`git push` した時に「リモート側に自分が持っていない変更がある」として拒否された場合の原因と、`git pull` や `git push -f` の判断基準を解説します。