Shell腳本100例:9 按照時間截取日誌文件

Shell腳本100例:9 按照時間截取日誌文件

在工作中我們經常通過統計日誌來診斷應用,比如PV或UV等,如何快速的統計固定的時間內日誌呢?今天將使用awksed來統計,兩者都可以實現但是有點差別。

以nginx的訪問日誌為例,以下是日誌的格式。

1.1.1.1 - - [27/Aug/2018:10:40:01 +0800] "GET /xml/important_news_day.json?b1535337602058=1 HTTP/1.1" 200 225 "https://www.abc.

com/health/13001507/20180827/33695845.html?newsbaidu" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)

Chrome/68.0.3440.106 Safari/537.36" "2.2.2.2"

需求統計10:40到10:45的日誌進行分析。

使用sed -n進行日誌截取

sed -n '/27\/Aug\/2018:10:40:00/,/27\/Aug\/2018:10:45:59/p' access.log

使用awk進行日誌截取

awk -F "[ /:]" '$7":"$8>="10:40" && '$7":"$8<="10:45"'access.log

說明:-F 指定分隔符;[ /:] 以空格和/和:作為分隔符;&& 邏輯與的意思。

兩者雖然都可以截取某個時間段的日誌,但是會發現統計的日誌條目不相同,原因是awk使用判斷時間比較精確,而sed在統計結尾時間的時候只會統計一個帶有2018:10:45:59時間戳的日誌。


分享到:


相關文章: