3

我正在使用基于 RPM 的发行版,我想动态搜索日志文件以查找今天和昨天的日期以输出报告。字符串必须是动态的( no 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 命令的东西

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

但我需要使用 %d 并搜索当天和昨天。这可以做到吗?

非常感谢任何见解。

4

2 回答 2

2

如果您有 GNU 日期:

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

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

于 2012-11-01T15:01:01.913 回答
0

使用 GNU awks 时间函数:

gawk 'BEGIN{
   today     = strftime("%Y-%m-%d")
   yesterday = strftime("%Y-%m-%d",systime()-24*60*60)
}
$0 ~ "(" today "|" yesterday ")"
' file
于 2012-11-01T15:07:53.687 回答