【发布时间】:2016-10-03 08:57:17
【问题描述】:
我想分析一个日志文件,并寻找一个 IP 地址。日志文件如下所示:
<date> -> <IP address>
例如:
2016-06-02 11:46:33 +0200 -> 86.171.55.134
所以我想选择包含给定 IP 的最后一行,并且该行不是以今天的日期(2016-06-02)开头,不幸的是我的第一次尝试不起作用:
tac logfile.txt|grep -P '^(?<!2016-06-03).*?86.171.55.134'
通过这种方式我成功地使其工作,但我想制定一个更通用的方式,我可以在哪里使用 .* 或 .*?而不是 19 点,因为有时两种模式之间存在更多且未知长度的数据:
tac logfile.txt|grep -aP -m1 '(?<!2016\-06\-03)...................86.171.55.134'
这里有 5000 行实际的日志数据来玩:
http://www.filefactory.com/file/2sdj77aqflxp/5000.txt
只有 IP 地址是伪造的。
【问题讨论】:
-
尝试提供minimal reproducible example,因为它太少了,无法开始使用。
标签: bash perl logging grep pcre