如何在linux下用shell脚本编写实现这个功能:提取从现在到几个小时以前的的log记录?

2024-10-28 13:52:08
推荐回答(1个)
回答1:

这个问题我觉得用 awk 比较好实现。我试了一个,不过没找到怎么直接处理这个非数字的月份问题,使用数组来做了一个转换,所以脚本长了一点。

下面是用 message 日志来做的测试,你可以换成你的日志文件来测试看看效果。

你可以更改 time_period 的值来达到想要其它时间内的日志。

# awk -F'[ :]+' 'BEGIN{time_period=5*3600; mon["Jan"] = 1; mon["Feb"] = 2; mon["Mar"] = 3; mon["Apr"] = 4; mon["May"] = 5; mon["Jun"] = 6; mon["Jul"] = 7; mon["Aug"] = 8; mon["Sep"] = 9; mon["Oct"] = 10; mon["Nov"] = 11; mon["Dec"] = 12; now=systime();}; now - mktime("2013 " mon[$1] " " $2 " " $3 " " $4 " " $5) <= time_period {print}' messages
  Aug 13 05:15:01 test ntpdate[26717]: the NTP socket is in use, exiting
  Aug 13 05:25:01 test ntpdate[26782]: the NTP socket is in use, exiting
  Aug 13 10:05:01 test ntpdate[29013]: the NTP socket is in use, exiting
  Aug 13 10:10:01 test ntpdate[29076]: the NTP socket is in use, exiting