conf t

インフラエンジニアのメモ

grepで複数の単語をor検索する方法

grep POST\|GET /var/log/access.log

linuxにてアクセスログ(/var/log/access.log)からPOSTとGETの件数を集計したかったため、grepを用いてキーワード"POST"と"GET"でor検索がしたい。
結論からいうと、以下コマンドでできました。
linuxでなくWindows上で検索したい場合は、サクラエディタを使えばできます。

grepで複数の単語をor検索する方法

以下grepコマンドを実行する
※3つ以上の複数キーワードでorしたい場合、キーワードのパイプを増やせば可能

grep "POST\|GET" /var/log/access.log

サクラエディタgrepで複数の単語を検索する場合
Ctrl + Gのgrepにて以下を入力し検索する
POST|GET

詳しい解説

Linuxの場合

linuxgrepの場合は\で|をエスケープしなければただしくgrepできません。
また、ダブルクオートなしの以下パターンの場合もうまくいきません。

grep POST\|GET /var/log/access.log
grep POST|GET /var/log/access.log

サクラエディタの場合

サクラエディタでもor条件の検索ができます。
Ctrl + Gでgrepウインドウを表示し、「正規表現」にチェックを入れます。

f:id:monaski:20150620204007p:plain:w500

条件に以下を入力します。|の前に\は必要ありませんでした。

POST|GET

3つ以上の複数キーワードでorしたい場合、パイプを増やせば可能です。

grep "POST\|GET\|php" /var/log/access.log