如何在Linux中search两个不同date的日志文件

我正在使用基于RPM的发行版,并且我想dynamicsearch日志文件以查看当天的date和昨天的date以输出报告。 string必须是dynamic的(没有egrep“\ b2012-10- [20-30] \ b”),这意味着我可以采取相同的单行或脚本,search今天的date和昨天的date的文件,并打印一些输出。 基本上search日志文件的特定条目。

这是我得到的,但我想用dynamic的东西来取代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._%-]+@[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命令的东西

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

但我需要采取%d并search当天和昨天。 可以这样做吗?

任何有识之士都非常感谢。

如果你有GNU日期:

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

x包含当前日期,y包含昨天的日期。

GNU awks时间函数:

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