基本的な使い方
基本構文
grep pattern file grep pattern file1 file2 grep "multi word" file grep -e pattern1 -e pattern2 file
よく使うフラグ
-i大文字小文字を区別しない
-v一致しない行を表示
-n行番号を表示
-c一致した行数を表示
-l一致したファイル名のみ表示
-L一致しなかったファイル名のみ表示
-w単語全体に一致
-x行全体に一致
再帰検索
ディレクトリの検索
grep -r pattern dir/ # 再帰的に検索 grep -R pattern dir/ # シンボリックリンクも追跡 grep -r --include="*.py" pattern dir/ grep -r --exclude="*.log" pattern dir/ grep -r --exclude-dir=".git" pattern .
再帰オプション
-rディレクトリを再帰的に検索
-Rシンボリックリンクも追跡して再帰検索
--include=GLOB一致するファイルのみ検索
--exclude=GLOB一致するファイルを除外
--exclude-dir=DIR一致するディレクトリを除外
正規表現
基本正規表現 (BRE)
grep "^start" file # 行頭 grep "end$" file # 行末 grep "go.d" file # 任意の1文字 grep "colou*r" file # 0回以上の繰り返し grep "[aeiou]" file # 文字クラス
拡張正規表現 (ERE)
grep -E "one|two" file # または grep -E "go(ing)?" file # 省略可能なグループ grep -E "[0-9]+" file # 1回以上の繰り返し grep -P "\d{3}-\d{4}" file # Perl 正規表現
正規表現フラグ
-E拡張正規表現(egrep 相当)
-F固定文字列(正規表現なし、fgrep 相当)
-PPerl 互換正規表現
-G基本正規表現(デフォルト)
コンテキスト表示
前後の行を表示
grep -A 3 pattern file # 一致行の後3行 grep -B 3 pattern file # 一致行の前3行 grep -C 3 pattern file # 前後3行 grep --context=3 pattern file
コンテキストオプション
-A NUM一致行の後 NUM 行を表示
-B NUM一致行の前 NUM 行を表示
-C NUM一致行の前後 NUM 行を表示
出力の制御
出力オプション
grep -o pattern file # 一致した部分のみ表示 grep -h pattern file # ファイル名を非表示 grep -H pattern file # ファイル名を表示(常に) grep --color=auto pattern file grep -m 5 pattern file # 最大5件で停止
出力フラグ
-o一致した部分のみ表示(1行1件)
-hファイル名プレフィックスを非表示
-H常にファイル名を表示
--color一致箇所を色付きで強調
-m NUMNUM 件一致したら停止
-q静止モード(終了コードのみ)
よくあるパターン
実用例
grep -rn "TODO" --include="*.py" . grep -i "error\|warning" app.log grep -v "^#" config.txt # コメント行を除外 grep -c "" file # 行数をカウント grep -E "^$" file # 空行を検索
パイプとの組み合わせ
ps aux | grep nginx cat file | grep -v "^$" history | grep git find . -name "*.js" | xargs grep "TODO"