我有一个fail2ban.log,我想从'Ban'字符串中获取特定字段。我当时可以使用正则表达式获取我需要的数据,但我无法将它们组合起来。典型的“fail2ban”日志文件有很多字符串。我对这样的字符串感兴趣:
2012-05-02 14:47:40,515 fail2ban.actions: WARNING [ssh-iptables] Ban 84.xx.xx.242
xx = 数字(数字)
我要获取:a) 日期和时间,b) 禁令(关键字),c) IP 地址
这是我的正则表达式:
知识产权 =(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
日期和时间 =^(\d{4}\W\d{2}\W\d{2}\s\d{2}\W\d{2}\W\d{2})
我的问题是,如何将这三个结合在一起。我试过这样的事情:
^(?=^\d{4}\W\d{2}\W\d{2}\s\d{2}\W\d{2}\W\d{2})(?=\.*d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$)(?=^(?Ban).)*$).*$
但也不能像我想要的那样工作。
举一个更清楚的例子,这就是我想要的:
greyjewel:FailMap atma$ cat fail2ban.log |grep Ban|awk -F " " '{print $1, $2, $7}'|tail -n 3
2012-05-02 14:47:40,515 84.51.18.242
2012-05-03 00:35:44,520 202.164.46.29
2012-05-03 17:55:03,725 203.92.42.6
最好的祝福