grep コマンドとは?
grep
(Global Regular Expression Print)は、ファイルや標準入力から指定したパターンに一致する行を検索して表示するコマンドです。
ログ調査、設定ファイル検索、出力フィルタリングなど幅広い場面で使用されます。
基本構文
grep [オプション] PATTERN [ファイル...]
例:
grep "error" /var/log/syslog
使用例と出力サンプル
ファイルからキーワードを検索
$ grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
標準入力との組み合わせ
$ cat /var/log/message | grep error
よく使うオプション一覧
オプション | 説明 |
---|
-i | 大文字小文字を区別しない(case-insensitive) |
-v | 一致しない行を表示(反転) |
-r または -R | ディレクトリ内を再帰的に検索 |
-n | 一致した行番号を表示 |
-l | 一致する行を含むファイル名のみ表示 |
-c | 一致した行数を表示 |
-H | 一致行のファイル名を表示(パイプ時に有効) |
-o | 一致した部分だけを表示 |
-E | 拡張正規表現を使う(egrepと同等) |
-F | 固定文字列検索(正規表現を無効に) |
--color | 一致箇所を色付け表示(多くの環境でデフォルト) |
正規表現の例
パターン | 意味 | 例 |
---|
^abc | 行頭が abc | ^ERROR → ERRORで始まる行 |
xyz$ | 行末が xyz | .log$ → .logで終わる行 |
foo.*bar | foo と bar の間に任意の文字列がある | |
[0-9] | 数字1文字 | |
[A-Z]+ | 英大文字の連続 | |
応用使用例
ディレクトリ以下を一括検索(ログなど)
$ grep -rn "failed" /var/log/
複数パターンを拡張正規表現で指定(-E)
$ grep -E "error|fail|fatal" app.log
一致行だけでなく該当ファイル名を抽出
$ grep -l "password" *.conf
一致した部分だけを抜き出す(-o)
$ grep -o "https://[^ ]*" file.txt
よくあるエラーと対処
エラー | 原因 | 解決策 |
---|
Binary file matches | バイナリファイル | --text を使う または strings 経由で処理 |
Argument list too long | ファイル数が多すぎる | find . -type f -exec grep PATTERN {} + を使う |
No such file | 指定ファイルが存在しない | パス・スペルを確認 |
実用Tips
tail -f access.log | grep "500"
- ファイルが特定の行を含むかのチェック(スクリプト向け):
grep -q "ERROR" output.log && echo "エラーあり"
まとめ
grep
は最も頻繁に使われるテキスト検索コマンドの一つ
-r
, -i
, -v
, -E
, -n
, -l
, -o
などを適切に使い分けることで強力な検索が可能
- 正規表現の理解が活用の鍵
参考リンク
- https://man7.org/linux/man-pages/man1/grep.1.html
- https://www.gnu.org/software/grep/manual/grep.html