我有一个日志文件,需要根据昨天的日期进行 grep 。如何获取昨天的日期。
日志文件中的时间戳格式为:
Wed Sep 23
对于两位数Wed Dec 1
一位数
请注意,我使用的是 HP/UX,而date
不是 GNU date
。
答案1
希望你能使用perl
$ dt=`perl -e 'print substr(scalar localtime(time-86400),0,10)'`
$ echo "$dt"
Sat Dec 5
$ grep "$dt" <logfile>
在perl
上面的代码中,time
返回自纪元以来的当前时间(以秒为单位)。为了得到昨天,减去 86400 秒并标量以人类可读的格式打印它。我假设您只需要昨天的DAY MON DT
格式,因此您可以 grep 匹配当天的所有行,无论时间如何。要仅获取必填字段,请使用substr
打印前 10 个字符并保存在dt
变量中。您可以将该变量与 一起使用grep
。
答案2
你的问题措辞不好,但从我收集的信息来看,你正在寻找这样的东西:
date --date="-1 day" +"%a %b %-d"
这将为您提供昨天的日期,其格式与您在日志文件片段中提供的格式相同。您可以通过执行以下操作将其保存到变量中:
yesterday=$(date --date="-1 day" +"%a %b %-d")
或者要 grep 你可以执行如下操作:
yesterday=$(date --date="-1 day" +"%a %b %-d") ; grep "$yesterday" <file name>
我希望能回答你的问题