No.038テキスト処理
grep
グレップ・パターン検索
文字列や正規表現(regular expression)に一致する行を取り出します。ログ、設定、ソースコード、一覧出力の絞り込みに幅広く使えます。
答えよく使う形
$ grep ERROR app.log
ERROR disk full
$ grep -n '^Listen' /etc/ssh/sshd_config
12:ListenAddress 0.0.0.0
$ grep -n "^Listen" /etc/ssh/sshd_config
練習用の部屋です。何を打っても本物は変わりません。本物の Linux で続ける →
覚える順番の中で30 コマンド・17 駅め / 30LPIC-1・22 駅め / 106
どんなコマンド?
ログから異常を探したい時、設定ファイルで特定キーを探したい時、ソースコードから定義や使用箇所を洗い出したい時に使います。
grepは、入力テキストから条件に一致する行を探し出すコマンドです。単純な固定文字列検索にも使えますが、真価は正規表現を使った柔軟な条件指定にあります。行頭、行末、文字クラス、繰り返し、否定などを組み合わせると、膨大な情報の中から必要な行だけを素早く取り出せます。
実務では、ログから異常行だけを抜き出す、設定ファイルから有効行だけを探す、再帰検索でソースコード中の定義箇所を調べる、他のコマンド出力を絞り込むといった場面で常に登場します。まずgrepを試す、という運用習慣が付くと調査速度が大きく上がります。
注意点は、正規表現の種類と再帰検索の影響範囲です。基本正規表現と拡張正規表現では扱える記法が少し異なります。また、grep -rは大量ファイルへ一気に当たるため、対象ディレクトリを誤ると不要な検索や機微情報への走査につながります。
書き方とオプション
組み立ててみるオプションを押すと、下の1行に足されます。もう一度押すと外れます。
$ grep
使用例と実行結果
行を押すとコピーできます。
ERROR disk full
12:ListenAddress 0.0.0.0
まず安全に試す
3分ミッション
手を動かすと覚えやすくなります。できたものに印を付けてください(この端末に残ります)。
0 / 2
ゲームで確かめる
つまずいたとき
正規表現のつもりで書いたが一致しない
原因基本正規表現と拡張正規表現の違いを混同しています。
こうする必要に応じて-Eを使い、どの記号が特殊扱いされるか確認します。
再帰検索が重くて終わらない
原因対象ディレクトリが広すぎます。
こうする検索範囲を絞り、--excludeやfindと組み合わせて対象を制御します。
終わったときの数(戻り値)
$ echo $?
- 01件以上一致しました。
- 1一致する行がありませんでした。
- 2構文不正、対象不存在、読取失敗などのエラーです。
気をつけることと入れ方
危険度は低いですが、再帰検索の対象を広げすぎると負荷や情報露出の原因になります。正規表現の解釈違いにも注意が必要です。
環境による違い
POSIXのgrepは基本機能を定義しています。GNU実装では再帰検索やカラー表示などが充実しています。egrep、fgrepは歴史的な別名で、現在はgrep -E、grep -Fで考えるほうが整理しやすいです。
確かめた環境2026-04-09 に確認
よくある質問
egrepとgrep -Eは同じですか。
現在はgrep -Eで考えるほうが一般的で、歴史的な別名への依存を減らせます。
一致しない時の終了コード1はエラーですか。
いいえ。grepでは『一致なし』を1で表します。
資格試験では
- LinuC レベル1中心1.03.4 正規表現を使用したテキストファイルの検索grepは、正規表現を使った検索や置換を学ぶ中核です。
- LPIC-1中心103.7 正規表現を使用したテキストファイルの検索grepは、LPIC-1で正規表現による検索と加工を扱う中心的なコマンドです。
- 共通基礎大事Linuxコマンド基礎
grep を最後まで読みました。
Linux コマンド辞典に戻る37 / 144