当字符串更改/创建时间条时,grep查找

时间:2013-08-16 16:11:04

标签: bash grep

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

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

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

  1. 这4个字符已经改变。 OR
  2. 更难(我猜)改变“BAR” - 每5分钟,10分钟或1小时等。
  3. 所以1我能得到:

    20110103T000204000 
    20110103T000330000 
    20110103T000523000 
    

    和2:

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

1 个答案:

答案 0 :(得分: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 

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