【ぐれっぷ】
grep とは?
最終更新:
💡 文字列の条件を決めて、一致する行だけを取り出す
テキストからパターンに一致する行を表示するコマンド。固定文字列と正規表現、大文字・小文字、行番号、終了コードの違いを、再現できる小さな例で解説します。
📌 このページのポイント
ログのERROR行だけを見るには?
小文字のerrorでも一致する?
既定では大文字・小文字を区別するので、ERRORだけの行には一致しない。区別しないならgrep -i 'error' server.log。どちらを探したいかに合わせて指定しよう。
正規表現とはどう違う?
ERRORかWARNで始まる行なら?
何も出ないときは、失敗したということ?
一致しなかった場合と、ファイルが読めないなどのエラーを分けよう。通常、GNU grepの終了コードは一致あり0、一致なし1、エラー2。自動処理では、1をすべて障害扱いにしないことが大事だよ。
もっと詳しく知りたい人へ
ハイフンで始まる文字を検索したいときは?
grep -F -- '-option' file.txtのように、--でオプション指定の終わりを示せます。-e '-option'でパターンを明示する方法もあります。引用符で囲むだけでは、オプションとの区別はできません。
ripgrep(rg)なら、同じファイルが全部検索される?
同じとは限りません。ripgrepは既定で再帰検索し、.gitignoreを尊重し、隠しファイルやバイナリファイルなどを除外します。見つからない理由を検索語だけで判断せず、対象ファイルの選び方も確認しましょう。速度も対象や条件で変わります。
終了コードの説明には例外もある?
GNU grepの-qでは、一致を見つけると、エラーがあっても0で終了する場合があります。また、別実装のgrepではエラーの終了コードが異なることがあります。自動処理に組み込む場合は、使っている実装とオプションのマニュアルを確認してください。
まとめ:ざっくりこれだけ覚えればOK!
「grep」って出てきたら「テキストから条件に一致する行を取り出すコマンド」と思えばだいたいOK!
📖 おまけ:英語の意味
「grep」 = パターンに一致する行を表示するコマンド名
💬 GNU grepのマニュアルでは、入力ファイルや標準入力からパターンに一致する行を探し、既定ではその行を表示するコマンドと説明されています。