如何在Windows上阅读包含特定模式的文件的最后一行?

时间:2016-04-26 11:13:52

标签: perl

我需要读取文件到最后并获取包含特定正则表达式模式的最后一行。我没有File:ReadBackwards模块。

我尝试了下面的代码,但发现我没有安装PerlIO::reverse

我无法安装模块。请建议实现此目的的代码。

最终我想要以模式

开头的文件行
(\d\d) (\w{3}) (\d{4}) (\d\d):(\d\d):(\d\d) --

这就是我试过的

open my $rev, '<:reverse', '$slogfile';

while ($line = <$rev>) { # do to contents reversely     
    print OUTLOG $line if $line =~ m/^(\d\d) (\w{3}) (\d{4}) (\d\d):(\d\d):(\d\d) --/;
    close($rev);
} 

1 个答案:

答案 0 :(得分:1)

像往常一样读取文件,用你的模式测试每一行,并在每次匹配时保存整行。文件完成后,打印出你保存的内容 - 它将是最后一次匹配。

open my $fh, '<', $slogfile;
my $last_match;
while (<$fh>) {
    if (m/^(\d\d) (\w{3}) (\d{4}) (\d\d):(\d\d):(\d\d) --/) { $last_match = $_ }
} 
print OUTLOG $last_match;