0

我有一个 modsecurity 日志文件,我想在其中获取最后一个事件,直到某个时间戳。简要介绍如何组装 modsecurity 日志文件:例如,1 个事件显示如下:

--8b014015-A--
[16/Mar/2016:20:13:02 +0100]
...omitted... 
--8b014015-B--
...omitted... 
--8b014015-F--
...omitted... 
--8b014015-H--
...omitted... 
--8b014015-Z--

一个完整的例子可以在这里找到http://pastebin.com/M1iqnY6L

我正在考虑将tail和grep结合起来。

  1. grep 查找时间戳的行(让我们将此行称为timestampLine
  2. tailLines = (文件中的总行数) - ( timestampLine + 1)
    //+ 1 因为请求的第一行带有--id-A--时间戳,第二行带有时间戳
  3. tail -n $ tailLines logfile.log

有没有更好的办法?如果没有,我如何 grep 这个时间戳并从步骤 1 中获取行号?

4

1 回答 1

1
awk '{print};/\[16\/Mar\/2016:20:13:02/ {exit}' logfile
于 2016-03-21T13:03:13.960 回答