Задача:
Дан файл с датами "dd.mm.yyyy 24h:mi:ss" - колонка дат. Найти минимальную, максимальную дату и разницу между ними в секундах. Можно считать, что все даты не менее 01.12.2006 00:00:00
Замечание к задаче:
В SunOS awk это nawk.
Результат должен быть оформлен как shell скрипт, первый параметр которого – имя файла, который подается на вход.
Операционка: XP Proff
Вот что я нашла на других форумах, но это perl...
работает вроде правильно, находит max и min дату, выводит разницу в секундах, но время ставит в том, и другом случае не max и не min, а случайное!!!!!!
по логике надо сделать еще как то сортировку по времени!в этом и проблема, у меня это никак не получается(((
Код: Выделить всё
eval
'exec perl -S $0 ${1+"$@"}' if 0;
open(INFILE,"<","5.txt");
my
%dates;
while(<INFILE>){
chomp;
/(\d+)\.(\d+)\.(\d+)\s+(\d+):\d+):\d+)/;
$dates{join(":",($3,$2,$1,$4,$5,$6))}=$_;
}
close
INFILE;
my @sorted_dates=sort keys %dates;
print "Max date:
$dates{$sorted_dates[$#sorted_dates]}\n";
print "Min date:
$dates{$sorted_dates[0]}\n";
my($ymax,$monmax,$dmax,$hmax,$minmax,$smax)=split
/:/,$sorted_dates[$#sorted_dates];
my($ymin,$monmin,$dmin,$hmin,$minmin,$smin)=split
/:/,$sorted_dates[0];
print "Diff secs:
",((((($ymax-$ymin)*12+($monmax-$monmin))*30+($dmax-$dmin))*24+($hmax-$hmin))*60+($minmax-$minmin))*60+($smax-$smin),"\n";5.txt - файл из которого берутся даты
Дат max и min несколько,а отличаются они только по времени! т.е если есть max дата 10.06.2006 10:33 и 10.06.2006 22.15, то вывести надо 10.06.2006 22:15 с максимальным временем.