使用Bash显示过去X天/ var / log / messages?

时间:2012-09-05 23:38:51

标签: bash sorting message

BASH中的

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

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..

有什么想法吗?救命!哈哈

3 个答案:

答案 0 :(得分:1)

我认为这是关闭。这将为您提供一个排序的条目列表(最近的第一个)到8月初。根据你运行它的时间,它会给你多达60天而不是30天。平均来说,我认为它会给你45左右。另一个缺点是你需要调整grep声明随着日期的推进,管道的末端。

sort -k1Mr -k2nr <file> | grep -E "Aug|Sep"

答案 1 :(得分:0)

- 这有效 - 但丑陋 -

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

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}

答案 2 :(得分:0)

有点晚了但是......

    egrep "^$(date '+%b %e' -2d)" /var/log/messages