概要
文字列や正規表現(regular expression)に一致する行を取り出します。ログ、設定、ソースコード、一覧出力の絞り込みに幅広く使えます。
基本構文
grep [オプション]... パターン [ファイル]...詳細解説
grepは、入力テキストから条件に一致する行を探し出すコマンドです。単純な固定文字列検索にも使えますが、真価は正規表現を使った柔軟な条件指定にあります。行頭、行末、文字クラス、繰り返し、否定などを組み合わせると、膨大な情報の中から必要な行だけを素早く取り出せます。
実務では、ログから異常行だけを抜き出す、設定ファイルから有効行だけを探す、再帰検索でソースコード中の定義箇所を調べる、他のコマンド出力を絞り込むといった場面で常に登場します。まずgrepを試す、という運用習慣が付くと調査速度が大きく上がります。
注意点は、正規表現の種類と再帰検索の影響範囲です。基本正規表現と拡張正規表現では扱える記法が少し異なります。また、grep -rは大量ファイルへ一気に当たるため、対象ディレクトリを誤ると不要な検索や機微情報への走査につながります。
このコマンドを使う場面
ログから異常を探したい時、設定ファイルで特定キーを探したい時、ソースコードから定義や使用箇所を洗い出したい時に使います。
まず安全に試す方法
1. printf 'INFOnERRORnWARNn' > app.log
2. grep ERROR app.log
3. grep -n '^[A-Z]' app.log
4. grep -v INFO app.log
3分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
小さなログを作り、grepでERRORだけを抽出します。
-
テスト用ディレクトリを作り、grep -rで複数ファイルから対象語を探します。
資格試験との関連
-
LinuC レベル1
範囲: 1.03.4 正規表現を使用したテキストファイルの検索根拠: officialgrepは、正規表現を使った検索や置換を学ぶ中核です。
-
LPIC-1
範囲: 103.7 正規表現を使用したテキストファイルの検索根拠: officialgrepは、LPIC-1で正規表現による検索と加工を扱う中心的なコマンドです。
-
共通基礎
範囲: Linuxコマンド基礎根拠: editorialgrepは、ファイル操作またはテキスト処理の基本を支えるため、試験横断の共通知識として価値があります。
実行結果サンプル
-
grep ERROR app.logERROR disk full -
grep -n '^Listen' /etc/ssh/sshd_config12:ListenAddress 0.0.0.0
戻り値コード
- 0 1件以上一致しました。
- 1 一致する行がありませんでした。
- 2 構文不正、対象不存在、読取失敗などのエラーです。
使用例
grep ERROR app.loggrep -n "^Listen" /etc/ssh/sshd_configgrep -r "TODO" ./srcgrep -F "user.name" config.ini
よくあるエラー
-
正規表現のつもりで書いたが一致しない 原因: 基本正規表現と拡張正規表現の違いを混同しています。対処: 必要に応じて-Eを使い、どの記号が特殊扱いされるか確認します。
-
再帰検索が重くて終わらない 原因: 対象ディレクトリが広すぎます。対処: 検索範囲を絞り、--excludeやfindと組み合わせて対象を制御します。
導入・互換性情報
POSIXのgrepは基本機能を定義しています。GNU実装では再帰検索やカラー表示などが充実しています。egrep、fgrepは歴史的な別名で、現在はgrep -E、grep -Fで考えるほうが整理しやすいです。
注意点 / セキュリティリスク
危険度は低いですが、再帰検索の対象を広げすぎると負荷や情報露出の原因になります。正規表現の解釈違いにも注意が必要です。
FAQ
-
Q. egrepとgrep -Eは同じですか。 A. 現在はgrep -Eで考えるほうが一般的で、歴史的な別名への依存を減らせます。
-
Q. 一致しない時の終了コード1はエラーですか。 A. いいえ。grepでは『一致なし』を1で表します。
関連用語
参照リンク
- カテゴリー: Text Processing
- レベル: Basic
- 対応試験: LinuC, LinuC レベル1, LPIC, LPIC-1, 共通基礎