Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Linux中搜索两个不同日期的日志文件_Linux_Date_Sed_Awk_Grep - Fatal编程技术网

如何在Linux中搜索两个不同日期的日志文件

如何在Linux中搜索两个不同日期的日志文件,linux,date,sed,awk,grep,Linux,Date,Sed,Awk,Grep,我使用的是一个基于RPM的发行版,我想动态搜索日志文件中今天的日期和昨天的日期,以输出报告。字符串必须是动态的(没有egrep“\b2012-10-[20-30]\b”),这意味着我可以使用相同的一行或脚本,搜索文件中今天和昨天的日期,并打印一些输出。基本上是在日志文件中搜索特定条目 这是我得到的,但我想用一些动态的东西来代替白鹭: grep "No Such User Here" /var/log/maillog | egrep "\b2012-10-2[3-4]\b" | cut -d "&

我使用的是一个基于RPM的发行版,我想动态搜索日志文件中今天的日期和昨天的日期,以输出报告。字符串必须是动态的(没有egrep“\b2012-10-[20-30]\b”),这意味着我可以使用相同的一行或脚本,搜索文件中今天和昨天的日期,并打印一些输出。基本上是在日志文件中搜索特定条目

这是我得到的,但我想用一些动态的东西来代替白鹭:

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." }'
但我需要使用%d并搜索当天和昨天。这能做到吗

非常感谢您的任何见解。

如果您有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

您也可以使用昨天的
-d
,而不是可读性更强的
-d“-1天”
。您可以发布您试图匹配的日志条目的外观吗?包含“此处无此类用户”的日志
gawk 'BEGIN{
   today     = strftime("%Y-%m-%d")
   yesterday = strftime("%Y-%m-%d",systime()-24*60*60)
}
$0 ~ "(" today "|" yesterday ")"
' file