2012-11-01 42 views
2

我正在使用基於RPM的發行版,並且我想動態搜索日誌文件獲取當天日期和昨天的日期以輸出報告。該字符串必須是動態的(不包括egrep「\ b2012-10- [20-30] \ b」),這意味着我可以採用相同的單行或腳本並搜索文件中的當前日期和昨天的日期並打印一些輸出。基本上搜索特定條目的日誌文件。如何在Linux中搜索兩個不同日期的日誌文件

這是我得到的,但我想的東西動態更換egrep的:

grep "No Such User Here" /var/log/maillog | egrep "\b2012-10-2[3-4]\b" | cut -d "<" -f 3 | egrep -o '\b[a-zA-Z0-9._%-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b' | cut -d "@" -f 2 | sort -d |uniq -ci | awk -F" " '{ print "Domain: " $2 " has been sent " $1 " messages that got a No Such User Here error." }' 

任何幫助表示讚賞。我正在尋找的東西,很可能使用日期命令

date "+%Y-%m-%d" 

但我需要採取%d並搜索當天和昨天。這可以做到嗎?

任何有識之士都非常感謝。

+0

你可以發佈你試圖匹配是什麼樣子的日誌條目?包含「沒有這樣的用戶在這裏」的日誌 – tMC

回答

1

如果你有GNU日期:

$ x=$(date "+%Y-%m-%d") 
$ y=$(date "+%Y-%m-%d" -d "-1 day") 
$ egrep "($x|$y)" file 

x包含當前日期和y包含了昨天的日期。

+0

您也可以使用'-d yesterday',而不是'-d「-1 day」'這更具可讀性。 – dogbane

0

隨着GNU awks時間功能:

gawk 'BEGIN{ 
    today  = strftime("%Y-%m-%d") 
    yesterday = strftime("%Y-%m-%d",systime()-24*60*60) 
} 
$0 ~ "(" today "|" yesterday ")" 
' file 
相關問題