文字列を検索する
ファイル内の文字列を検索して該当する行を表示する
拡張子が .txt のファイルにある「diff」という文字列を検索する場合
# grep diff *.txt
標準出力の結果を検索する
「ps aux」というコマンドを実行し、その結果から「telnet」という文字列を含む行を表示する場合
# ps aux | grep telnet
オプション
-c 該当行は表示せずに、該当した数を表示する
-h 複数ファイルを検索対象としたときに、結果でファイル名を表示しない
-i 大文字と小文字の区別をしない
-l 該当ファイル名だけを表示する
-L 該当しなかったファイル名だけを表示する
-n 該当行の行番号を表示する
-v 該当しない行を表示する
-f file 検索パターンとしてfileの内容を使用する
再帰的にファイルの内容を検索する
カレントディレクトリ以下から、拡張子 php のファイルのみを対象に、文字列 hoge を含むファイル名と内容を出力
# grep -r hoge --include='*.php' ./
検索文字列をファイルから読み込んで複数検索
grep -f patterns.txt target.txt
grep -f は 各行をそのまま正規表現として扱うが、正規表現を使うなら -E を併用するのが一般的。
grep -E -f patterns.txt target.txt
-E は「拡張正規表現(Extended Regular Expression, ERE)を使う」という意味。
+ ? | () がそのまま使える。
固定文字列検索にしたいなら -F(正規表現は無効だが高速)
grep -F -f patterns.txt target.txt
パターンファイルに 空行 があると「空文字列検索」になり、空文字列は すべての行にマッチする。
特に、パターンファイルの最終行が改行で終わっていると空行があると判断してしまうので注意。
テキストファイルの行数を数える
行数のみ得たい場合は grep を使う
# grep -c '' file.txt