例えば、サーバ再起動した時間の後のログだけをチェックしたいというときなど、
特定の時間の後のログだけチェックしたいというとき、どうやってgrepすればよいんだろうか。
例えば、apacheのcmbined形式のログで2015年7月26日18時45分以降のログだけを表示させたいとかっていうとき、
どんな風に書けば効率がいいのだろうか?
comined形式の例
192.168.1.1 - - [26/Jul/2015:22:51:46 +0900] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"
以下のような感じで書いてみた
grep '\[27\/May\/2015' access_log-20150531 | grep -v '\[27\/May\/2015:0' | grep -v '\[27\/May\/2015:1[0-7]' | grep -v '\[27\/May\/2015:18:[0-3]' | grep -v '\[27\/May\/2015:18:4[0-4]'
それぞれのgrepの役割は以下
1:その日のログだけ抽出
2:0時台のログを除外
3:10時~17時台のログを除外
4:18時0~30分台のログを除外
5:18時40~44分台のログを除外
一応できたけど、とっさに確認したい時などはこんな長いコマンド考えているよりも、
素直に目grepしたほうが速そうな気もします・・・。
他にもっと良い方法ないのでしょうか。