根據時間戳剪切日誌檔案部分的快速腳本

根據時間戳剪切日誌檔案部分的快速腳本

我正在尋找一個快速腳本這將解析一個大的mail.log,並傳回該部分兩個指定時間戳之間。我想在我的所有郵件伺服器上運行它,並讓它們將相關日誌部分複製到中央位置以進行進一步分析。

我用 bash 寫了一些東西,可以工作,但速度很慢。

有人知道嗎任何已經存在的東西為了實現這個目標 - 還是我需要學習 Perl 並自己編造一些東西?

(我不會把這個放在SO上,因為我還沒有達到我想要的程度任何程式碼 - 只是尋找其他人已經在使用的東西)

答案1

我喜歡 awk :)

對於我的日誌,其格式為:

Jul 14 12:49:10 xxxxxx sendmail[31337]: ...........

我會用:

awk '$3 >= "12:00:00" && $3 <= "13:00:00" {print;}' < /var/log/maillog

想必您可以根據需要進行調整,例如,如果您不按天拆分日誌。

獎金:

Apache 格式,我剛好使用過:

xxx.xxx.xxx.xxx - - [01/Jul/2009:03:06:24 -0400] "GET /favicon.ico HTTP/1.1" 200 3638
awk '$4 >= "[01/Jul/2009:03:00:00" && $4 <= "[01/Jul/2009:04:00:00" {print;}' < access_log

答案2

對於特定日期範圍並列印 > 輸出文件

(我不能在上面的答案中添加評論,否則我會這樣做)

華泰

awk '$2 >= "21" && $3 >= "09:00:00" && $2 >= "21" && $3 <= "11:00:10" {print > "m_range.log";}' < /var/log/m.log

cat m_range.log 
...
Nov 21 09:00:17 mail postfix/qmgr[1694]: 1C50D276524A: from=<[email protected]>, size=2378, nrcpt=1 (queue active)
...

相關內容