我有一个文件,其中包含以下格式的日期列表:yyyymmddhhmmss
20150608141617
20150608141345
20150608141649
20150608141506
20150608141618
20150608141545
想要验证这些日期的正确性,以防在上一个过程中生成过程中出现错误。
正确性意味着没有空格,长度为 14 个字符,日期有效,即没有像 20151508141545
这样的日期。
这在 perl 或 bash 中可能吗?
以下内容将完成您需要的操作,使用快速检查长度,然后使用内置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 "$daten";
}
__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__
及其下的所有内容。