Perl 解析文本(日志文件)

Perl 解析文本(日志文件),perl,parsing,text,logfile,Perl,Parsing,Text,Logfile,我是perl新手:)我需要你的帮助 我想解析我的log.txt,但我很困惑,不确定是否要解析 这个编码 我试过log.pcap,但我不需要它。所以我想解析文本,而不是用递归方法解析pcap。有人编辑我的代码吗?? 这是我的log.txt:(输入) 是的,我想这样解析:(输出) 谢谢你。。。 你能帮助我吗??? 我现在在做什么…你的日志行有点奇怪。某些字段(请求URI和工具)在冒号前包含空格,这是意外的。我会检查您的日志行是否确实包含这些意外的空格。另外,端口号在没有源或目标限定符的情况下出现

我是perl新手:)我需要你的帮助 我想解析我的log.txt,但我很困惑,不确定是否要解析 这个编码

我试过log.pcap,但我不需要它。所以我想解析文本,而不是用递归方法解析pcap。有人编辑我的代码吗??

这是我的log.txt:(输入)

是的,我想这样解析:(输出)

谢谢你。。。 你能帮助我吗???
我现在在做什么…

你的日志行有点奇怪。某些字段(请求URI和工具)在冒号前包含空格,这是意外的。我会检查您的日志行是否确实包含这些意外的空格。另外,端口号在没有源或目标限定符的情况下出现两次,这有点令人惊讶。再次检查您的真实日志文件。下面的代码片段适用于问题中发布的日志行。由于字段名不是唯一的,因此假定它们总是以相同的顺序打印

my @fields = ('Time', 'IP Address Source', 'Mac Address Source', 'Port Numbers',
    'IP Address Destination', 'Mac Address Destination', 'Port Numbers', 'HTTP Host',
    'Request Method', 'Request URI ', 'Tool ');

my $re = join(':\s+(.*?)\s+', @fields);
$re .= ':\s+(.*)';

warn $re;

$line = 'Time: Jan 31, 2012 19:41:17 IP Address Source: 221.255.225.143 Mac Address Source: 010912063cfc Port Numbers: 44535 IP Address Destination: 10.12.264.43 Mac Address Destination: 00f04c080788 Port Numbers: 3306 HTTP Host: example.com Request Method: GET Request URI : /index.php?page=rilis artikel=999999.9%27+union +all+select+0x31303235343830303536%2C Tool : Havij';

my @values = $line =~ /$re/;

print "values = @values\n"

您是否尝试过或使用过描述的方法?

您想解析它…它是什么意思?您希望得到什么样的输出?是的,我想解析我的log.txt=>并像上面那样输出。。。你能帮我吗?billw谢谢你的关注:)是的,我想像你想的那样输出我的解析,但我想用recursif进行解析,因为我的日志文件很大,然后假设它总是以相同的顺序重复打印。。因为我一直在想,但从未结束。。。谢谢,对不起,是的,我在那个网站上试过。。。但我忘了把它放在。。。你能告诉我如何解析文本而不是pcap吗??谢谢:)
Time: Jan 31, 2012 19:41:17
   IP Address Source: 221.255.225.143
           Mac Address Source: 010912063cfc
           Port Numbers Source: 44535
   IP Address Destination: 10.12.264.43
           Mac Address Destination: 00f04c080788
           Port Numbers Destination: 3306
   HTTP Host: example.com
           Request Method: GET
           Request URI: /index.php?page=rilis artikel=999999.9%27+union
                         +all+select+0x31303235343830303536%2C
           Tool: Havij
my @fields = ('Time', 'IP Address Source', 'Mac Address Source', 'Port Numbers',
    'IP Address Destination', 'Mac Address Destination', 'Port Numbers', 'HTTP Host',
    'Request Method', 'Request URI ', 'Tool ');

my $re = join(':\s+(.*?)\s+', @fields);
$re .= ':\s+(.*)';

warn $re;

$line = 'Time: Jan 31, 2012 19:41:17 IP Address Source: 221.255.225.143 Mac Address Source: 010912063cfc Port Numbers: 44535 IP Address Destination: 10.12.264.43 Mac Address Destination: 00f04c080788 Port Numbers: 3306 HTTP Host: example.com Request Method: GET Request URI : /index.php?page=rilis artikel=999999.9%27+union +all+select+0x31303235343830303536%2C Tool : Havij';

my @values = $line =~ /$re/;

print "values = @values\n"