我正在使用基于RPM的发行版,我想动态搜索日志文件,查看今天的日期和昨天的日期以输出报告。字符串必须是动态的(没有egrep“\ b2012-10- [20-30] \ b”)意味着我可以使用相同的单行或脚本并搜索文件以查看今天的日期和昨天的日期并打印一些输出。基本上在日志文件中搜索特定条目。
这是我得到的,但我想用动态的东西取代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 "+%Y-%m-%d"
但我需要拿%d并搜索当天和昨天。可以这样做吗?
非常感谢任何见解。
答案 0 :(得分:1)
如果你有GNU日期:
$ x=$(date "+%Y-%m-%d")
$ y=$(date "+%Y-%m-%d" -d "-1 day")
$ egrep "($x|$y)" file
x包含当前日期,y包含昨天的日期。
答案 1 :(得分:0)
使用GNU awks时间函数:
gawk 'BEGIN{
today = strftime("%Y-%m-%d")
yesterday = strftime("%Y-%m-%d",systime()-24*60*60)
}
$0 ~ "(" today "|" yesterday ")"
' file