我正在运行一个后台脚本,该脚本涉及每5分钟读取一个日志文件,格式如下
21:25:57 [INFO] event from 5 minutes ago
21:26:54 [INFO] potentially relevant event
21:28:26 [INFO] some event
21:30:06 [INFO] another event
除了我只想查看过去5分钟内打印的线条。基本上我需要找到最接近文件末尾的date -s "$logdate" +%s <= date -d "5 min ago" +%s
行,并忽略它之前的所有行。
不幸的是,时间戳中没有日期,因此除非我重新启动服务器并重置日志(我不愿意),否则每天都会重复出现时间戳。使用tac
代替cat
可能更有效,因为我只关心从文件末尾开始的行。
答案 0 :(得分:0)
如果你有GNU日期:
$ date +%T
04:56:32
$ date -d "5 min ago" +%T
04:51:45
你可以这样做:
tac logfile | awk -v start=$(date -d "5 min ago" +%T) '$1 < start {exit} 1' | tac