Perl解析Apache日志

Chettyharish

我试图解析apache日志,但是我无法找出执行该操作的确切正则表达式

use strict;
use warnings;

my $log_line =
'178.255.215.79 - - [14/Jul/2013:03:27:51 -0400] 
"GET /~hines/ringworld_config/lilo.conf HTTP/1.1" 304 - "-" 
"Mozilla/5.0 (compatible; Exabot/3.0; +http://www.exabot.com/go/robot)';
#to find out IP address
print( $log_line =~ /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/ );
#to find out Timestamp
print( $log_line =~ /\[[\d]{2}\/.*\/[\d]{4}\:[\d]{2}\:[\d]{2}\]*/ );

#Third regex for getting the complete link here :/~hines/ringworld_config/lilo.conf

我在第二个正则表达式中做错了什么,因为我只得到其中的1个?如何为第三个需求创建一个正则表达式?

最后,我想将检索后的时间戳转换为可以比较和减去的一些值。像时间戳一样,从时代转换开始。

用户名

第二个正则表达式(时间戳)看起来像这样:

m~\[\d{2}/[^/]*/\d{4}:\d{2}:\d{2}:\d{2}\s*-\d+\]~

展开:

m~\[ \d{2} / [^/]* / \d{4} : \d{2} : \d{2} : \d{2} \s* - \d+ \]~x

与捕获组

m~\[ (\d{2}) / ([^/]*) / (\d{4}) : (\d{2}) : (\d{2}) : (\d{2}) \s* - (\d+) \]~x


第三个regeex(链接)可能是这样的:

修改后的链接正则表达式

m/"GET\s+([^"\s]*)\s*"/ 捕获组1包含链接。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章