0

我正在尝试从具有如下时间戳的文件中提取数据:

20110103T000204000 
20110103T000229000 
20110103T000253000 
20110103T000258000 
20110103T000330000 
20110103T000523000 
20110103T000536000 

T 后面的四个字符代表 HHMM 小时和分钟。在以下情况下如何提取行:

  1. 这四个字变了。或者
  2. 通过更改“BAR”更困难(我猜) - 每 5 分钟、10 分钟或 1 小时等。

所以对于 1 我可以得到:

20110103T000204000 
20110103T000330000 
20110103T000523000 

对于 2:

20110103T000004000 
20110103T000530000 
20110103T001023000 
20110103T001504000 
20110103T002030000 
20110103T002523000 
4

1 回答 1

2

grep 对你来说是不够的。这是一个应该有所帮助的 Perl 程序的开始。

use warnings;
use strict;

my $current_datetime = '';
while (my $line = <>) {
    chomp $line;
    my $datetime = substr( $line, 0, 13 );
    if ( $datetime ne $current_datetime ) {
        print $line, "\n";
        $current_datetime = $datetime;
    }
}

将其保存为whatever.pl,并执行为

perl whatever.pl yourinputfile

你应该得到输出

20110103T000204000 
20110103T000330000 
20110103T000523000 

这会给你一个好的起点吗?

于 2013-08-16T16:21:23.940 回答