0

在 BASH 中我想不出一个好的方法来做到这一点,但我只想查看过去 30 天在 /var/log/messages* 中的条目。对我来说,问题是如何仅使用月份和日期来做到这一点。例如:

Sep 2 14:26:13 <SOME ENTRY>
Sep 4 14:26:13 <SOME ENTRY> 
Sep 9 14:26:13 <SOME ENTRY>
Sep 14 14:26:13 <SOME ENTRY>
etc..

有任何想法吗 ?帮助!哈哈

4

3 回答 3

1

我认为这很接近。这将为您提供截至 8 月初的条目排序列表(最近的第一个)。根据你运行它的时间,它会给你大约 60 天而不是 30 天。平均而言,我想它会给你大约 45 天。另一个缺点是你需要调整grep管道末端的语句随着日期的推进。

sort -k1Mr -k2nr <file> | grep -E "Aug|Sep"
于 2012-09-06T01:39:07.193 回答
1

有点晚了,但是……

    egrep "^$(date '+%b %e' -2d)" /var/log/messages
于 2016-04-05T19:15:53.000 回答
0

-- 这行得通 --- 但很丑 --

-- 仅打印每次循环迭代中符合日期的搜索(即最近 X num 天)

for (( i=0; i<=${MAXSEARCHDAYS}; i++)) ;do 
egrep $(date --date "now -${i} days" +%b) ${USBFOUND} | grep $(date --date "now -${i} days" +%e) >> ${TEMPFILE} 
done 
sort -k1,1M -k2,2n ${TEMPFILE} | uniq >> ${LOGFILE}
于 2012-09-25T23:00:53.507 回答