grep - テキスト・文字列を操作するコマンド
指定した文字列がテキスト内の存在した場合、その行を抽出する
■よく使う形(例)
※apacheのアクセスログから、FireFoxでアクセスされたリストを出力する。
# grep Firefox /var/log/apache/access_log
221.95.88.49 - - [11/Feb/2007:14:34:35 +0900] "GET / HTTP/1.1" 301 241 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"221.95.88.49 - - [11/Feb/2007:14:34:35 +0900] "GET /index.php HTTP/1.1" 200 14765 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"
※apacheのアクセスログから、LINUXというディレクトリ下にあるhtmlファイルをアクセスしたログを抽出する。
# grep '.*/LINUX/.*\.html' access_log
61.197.192.138 - - [08/Feb/2007:09:55:39 +0900] "GET /LINUX/intro/check.html HTTP/1.1" 301 255 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)"61.197.192.138 - - [08/Feb/2007:10:05:29 +0900] "GET /LINUX/reference/vmstat.html HTTP/1.1" 301 255 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)"
※catコマンドと組み合わせて、apacheのアクセスログの件数(行数)を調べる。
# cat access_log | grep "" -c
1042949
sedコマンドとよく似た使い方(正規表現やオプション指定等)ができる。
■主なオプション
オプション | 機能説明 |
---|---|
-n | 文字列(または文字列パターン)に合致した行と行番号を表示する。 |
-v | 文字列(または文字列パターン)に合致しない行を表示する。 |
-i | 大文字小文字の区別をしないで検索。 |
-f | ファイルから検索パターンを読み込んで検索する。 |