在SunOS 5.10上验证文件中的日期

时间:2015-06-11 14:20:29

标签: bash perl shell date sunos

我有一个文件,其中包含以下格式的日期列表:yyyymmddhhmmss

20150608141617
20150608141345
20150608141649
20150608141506
20150608141618
20150608141545

如果在之前的流程中生成过程中出现错误,则需要验证这些日期的正确性。

正确性意味着没有空格,长度为14个字符且日期有效,即没有像20151508141545这样的日期。

这可能在perl或bash中吗?

1 个答案:

答案 0 :(得分:1)

以下将根据您的需要进行快速检查,然后使用内置Time::Piece模块验证正确性。

#!/usr/bin/perl

use warnings;
use strict;

use Time::Piece;

for my $entry (<DATA>){
    chomp $entry;

    next if length($entry) > 14;

    my $date;

    eval {
        $date = Time::Piece->strptime($entry, "%Y%m%d%H%M%S");
    };
    if ($@){
        next;
    }

    print "$date\n";
}

__DATA__
20150608141617
20152525252525
201506081413454
20150608141649
20150608141506
20150608141618
20150608141545

要将此代码更改为从for()循环上方的文件中读取,请写入:

open my $fh, '<', 'filename.txt'
  or die "Can't open the file: $!";

然后在for()循环中,将<DATA>更改为<$fh>并删除__DATA__及其下方的所有内容。