grep グレップ

英語表記grep

日本語表記パターン検索

別名egrep, fgrep

正式名称grep

危険度安全

What does it mean?

文字列や正規表現(regular expression)に一致する行を取り出します。ログ、設定、ソースコード、一覧出力の絞り込みに幅広く使えます。

Command Quest

grep を今日の道具にする

文字列や正規表現(regular expression)に一...

$ grep [オプション]... パターン [ファイル]...
関連用語16
次のコマンド0
FAQ2
参照4

概要

文字列や正規表現(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分ミッション

少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。

  1. 小さなログを作り、grepでERRORだけを抽出します。

  2. テスト用ディレクトリを作り、grep -rで複数ファイルから対象語を探します。

資格試験との関連

  • LinuC レベル1
    範囲: 1.03.4 正規表現を使用したテキストファイルの検索
    根拠: official
    grepは、正規表現を使った検索や置換を学ぶ中核です。
  • LPIC-1
    範囲: 103.7 正規表現を使用したテキストファイルの検索
    根拠: official
    grepは、LPIC-1で正規表現による検索と加工を扱う中心的なコマンドです。
  • 共通基礎
    範囲: Linuxコマンド基礎
    根拠: editorial
    grepは、ファイル操作またはテキスト処理の基本を支えるため、試験横断の共通知識として価値があります。

オプション

  • -i
    大文字小文字を区別せず検索します。
    grep -i error app.log
  • -n
    行番号付きで表示します。
    grep -n '^Listen' sshd_config
  • -E
    拡張正規表現を使います。
    grep -E '^[a-z]+[0-9]+$' users.txt
  • -F
    正規表現ではなく固定文字列として検索します。
    grep -F 'user.name' config.ini
  • -r
    ディレクトリを再帰検索します。
    grep -r TODO ./src

実行結果サンプル

  • grep ERROR app.log
    ERROR disk full
  • grep -n '^Listen' /etc/ssh/sshd_config
    12:ListenAddress 0.0.0.0

戻り値コード

  • 0 1件以上一致しました。
  • 1 一致する行がありませんでした。
  • 2 構文不正、対象不存在、読取失敗などのエラーです。

使用例

  • grep ERROR app.log
  • grep -n "^Listen" /etc/ssh/sshd_config
  • grep -r "TODO" ./src
  • grep -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で表します。

関連用語

  • GNU
  • ソースコード
  • 標準入力
  • 標準エラー出力
  • パイプ
  • build
  • log
  • syslog
  • framework
  • Git
  • tag
  • README
  • semantic versioning
  • code review
  • issue tracker
  • unit test

参照リンク

関連記事