我有一个包含事件时间戳的日志文件。我希望从日志文件中获取最新的时间戳,并在写入日志文件时更新此编号。
这些事件有时会无序发生,有时只需要几个小时,因为它们会在出现中断时被缓冲,所以我不能只拿下日志文件的底线。
我正在考虑在日志文件上运行tail -f|grep
,将输出汇总到date
的某个变体以将格式化时间转换为Unix纪元时间,并将其传递给将记住的脚本到目前为止看到的最多数字。
有没有人会有这样做的脚本?
编辑:日期格式为YYYY-MM-DD HH:MM:SS,即2012-02-02 04:15:15
答案 0 :(得分:1)
打印当前最大值:
$ tail -F youfile.log |
> awk 'NR == 1 {max=$0; print max} $0 > max {max = $0; print max}'
$ printf "2010-10-01 01:02:02 a
2010-09-30 02:03:04 b\n2010-08-29 01:02:02 c\n2010-10-01 01:02:03 d\n" |
> awk 'NR == 1 {max=$0; print max} $0 > max {max = $0; print max}'
2010-10-01 01:02:02 a
2010-10-01 01:02:03 d
答案 1 :(得分:0)
我认为您的时间戳格式为'YYYY-MM-DD HH:MM:SS'或类似内容。
watch 'tail -n 20 yourfile.log | LANG=C sort | tail -n 1'
或者如果您希望查看历史记录:
while true
do
tail -n 20 yourfile.log | LANG=C sort | tail -n 1
sleep 2
done
在LANG=C
之前使用sort
,因为sort
的行为可能会有所不同,具体取决于您的当地人。