Perl RegExp:打印与特定时间戳匹配的行

Perl RegExp:打印与特定时间戳匹配的行,regex,perl,Regex,Perl,我有一个问题,我不知道如何解决。我有一个巨大的日志文件,大约有25000行,每行信息都用一分钟分隔,例如09:00:00、09:01:00等。我不想在电子表格中提取我需要的每一行,而是想通过脚本来完成。虽然我还没有那么丰富的脚本编写经验,但我正在努力学习Perl 我想做的是:提取与时间戳09:03:00、09:18:00、09:33:00、09:48:00匹配的每一行,并将其打印到新文件中 这是我完成这项任务的可怕的错误尝试 #!/usr/bin/perl use warnings; use s

我有一个问题,我不知道如何解决。我有一个巨大的日志文件,大约有25000行,每行信息都用一分钟分隔,例如09:00:00、09:01:00等。我不想在电子表格中提取我需要的每一行,而是想通过脚本来完成。虽然我还没有那么丰富的脚本编写经验,但我正在努力学习Perl

我想做的是:提取与时间戳09:03:00、09:18:00、09:33:00、09:48:00匹配的每一行,并将其打印到新文件中

这是我完成这项任务的可怕的错误尝试

#!/usr/bin/perl
use warnings;
use strict;
use diagnostics;

my @expression = ( '09:03:00', '09:18:00', '09:33:00', '09:48:00' );
open FILE, "logfile.txt" or die $!;
if (FILE =~ @expression) {
print "$_\n";
}

您并没有在代码中真正使用regexp。你想要的表达方式相当简单

my $expression = /09:(03|18|33|48):00/
扫描文件的代码可能也不起作用。更标准的方法是

while(<FILE>)
{
  if(/$expression/) { print; }
}


您并没有在代码中真正使用regexp。你想要的表达方式相当简单

my $expression = /09:(03|18|33|48):00/
扫描文件的代码可能也不起作用。更标准的方法是

while(<FILE>)
{
  if(/$expression/) { print; }
}

像这样:

open FILE, "logfile.txt" or die $!;
print grep /09:(03|18|33|48):00/, <FILE>;
close FILE or warn $!;
像这样:

open FILE, "logfile.txt" or die $!;
print grep /09:(03|18|33|48):00/, <FILE>;
close FILE or warn $!;

谢谢,我想使用grep是一种更好的方法。再次感谢!谢谢,我想使用grep是一种更好的方法。再次感谢!