linux下使用awk命令按時間段篩選日誌

需求

不少時候咱們須要按照時間段來進行日誌的分析,好比說查看上午的,或者某月某日的的具體日誌,就不能簡單實用tail -f或者head -n命令了。這個時候咱們須要借用awkandroid

命令

zcat com.log20160529.gz | grep 'dianping_reply.log'| awk '{split($4,array,"[");if(array[2]>="29/May/2016:00:00:26" && array[2]<="29/May/2016:00:01:14"){print $0}}'

解釋

掃描gz壓縮文件,從中尋找帶有dianping_reply的行,將改行按照[進行拆分,而後直接使用if條件進行判斷,比較,最終輸出想要的結果。
命令解析:api

zcat 直接讀取壓縮文件的內容
grep用來過濾特定字符的行
awk 用來執行命令
split用來切分字符串iphone

另一種狀況

test.log日誌

[22/Feb/2017-18:51:58]    api.momo.com    /api/feed    HTTP/1.1      121.0.0.1      android1.2
[22/Feb/2017-18:51:59]    api.momo.com    /api/follow    HTTP/1.1      121.0.0.2    iphone1.1
[22/Feb/2017-18:52:58]    api.momo.com    /api/user    HTTP/1.1      121.0.0.3    iphone1.1
[22/Feb/2017-18:52:41]    api.momo.com    /api/feed    HTTP/1.1      121.0.0.4    android1.2
[22/Feb/2017-18:56:30]    api.momo.com    /api/follow    HTTP/1.1      121.0.0.2    android1.2
[22/Feb/2017-18:51:21]    api.momo.com    /api/user    HTTP/1.1      121.0.0.3    iphone1.1
[22/Feb/2017-18:59:58]    api.momo.com    /api/user    HTTP/1.1      121.0.0.3    android1.2
[22/Feb/2017-18:51:21]    api.momo.com    /api/feed    HTTP/1.1      121.0.0.1    iphone1.1

查詢22/Feb/2017-18:52:59以前的日誌code

cat test.log | awk '{split($1,array,"[");split(array[2],array2,"]");if(array2[1] >= "22/Feb/2017-18:52:59"){print($0)}}'
相關文章
相關標籤/搜索