オプション
検索関連
| オプション | 説明 |
|---|---|
| -r | 再帰的にgrepコマンドを実行する |
| --include=*.rb | 指定ファイルのみ検索 |
| --exclude-dir=test | 指定フォルダを除外 |
| -w | 単語としてマッチする場合(IDEのwhole words only) |
| -e 検索パターン | 検索パターンを指定 |
| -G | 基本正規表現を使う |
| -E | 拡張正規表現を使う |
| -P | Perl正規表現を使う |
| -i | 大文字小文字区別しない |
| -w | Matches only word/words instead of substring. |
| -v | マッチしない形を検索結果になる |
| -n | 行番号を表示する |
表示関連
| オプション | 説明 |
|---|---|
| -A number | マッチ結果の後ろの何行を表示(after) |
| -B number | マッチ結果の前の何行を表示(before) |
| -number | マッチ結果の前後何行を表示(before and after) |
| -n | 行番号を出力する |
| -l | ファイル一覧を出力する |
| --color | 結果に色つける |
| --line-buffered | bufferしないで出力、ログリアルタイム監視など使う |
| -s | ファイルがない時でエラーが出力されないようにする |
| -o | Display only matched pattern instead of whole line. |
検索
複数パターン検索
注意するのは、"|" ではなく "\|"を利用すること
$ grep "aaa\|bbb" test.txt
カレントフォルダ(サブフォルダ含む)で特定の文字含むファイル一覧
grep -rnw ./ -e "pattern"
アクセスログをリアルタイムに表示する
$ tail -f access_log | grep --line-buffered 'test'
grep -vの活用
-vはマッチしない形を結果になる、SQLのNOTのようなもの
grep で#で始まるコメント行および空白行を削除する
$ grep -v -e '^\s*#' -e '^\s*$' filename
プロセス名で検索し、grepを邪魔しないようにする
$ ps aux | grep java | grep -v grep
特定のファイルの文字列のみ検索
_smart_phoneのviewファイルのみ文字列を検索する
find app/views/users2016/ -name "*_smart_phone*" | xargs grep 'content_for :title'
結果を見やすく
aliasで登録する
alias grep="grep --with-filename --line-number --color=always"
-C5で前後5行表示、ログ調査時によく使う
$ grep -C5 'error' log/xxxxx.log
その他
圧縮ファイル解凍せず検索するzgrep
$ zgrep 'test' file_name
マッチした部分のみ表示する
$ zgrep -ro --color 'rand=' sitemaps/
xmlタグの中身を取得
grep -Eo '<tag>(.*?)<\/tag>' test.xml