Файл структурирован следующим образом:Perl Как найти определенную начальную и конечную строки из файла журнала?
<28 Jan 2014 00:08:24>00001 startmessage1
<28 Jan 2014 00:08:24>00001 msg1
<28 Jan 2014 00:08:24>00001 msg1
<28 Jan 2014 00:08:24>00001 startmessage2
<28 Jan 2014 00:08:25>00001 msg2
<28 Jan 2014 00:08:25>00001 msg2
<28 Jan 2014 00:08:25>00001 msg2
<28 Jan 2014 00:08:25>00001 msg2
<28 Jan 2014 00:08:25>00001 msg2
<28 Jan 2014 00:08:26>00001 msg2
<28 Jan 2014 00:08:26>00001 Endmessage2
<28 Jan 2014 00:08:26>00001 msg1
<28 Jan 2014 00:08:26>00001 msg1
<28 Jan 2014 00:08:27>00001 startmessage3
<28 Jan 2014 00:08:27>00001 msg3
<28 Jan 2014 00:08:28>00001 msg1
<28 Jan 2014 00:08:28>00001 msg1
<28 Jan 2014 00:08:30>00001 Endmessage1
<28 Jan 2014 00:08:31>00001 msg3
<28 Jan 2014 00:08:31>00001 msg3
<28 Jan 2014 00:08:31>00001 msg3
<28 Jan 2014 00:08:31>00001 Endmessage3
Дата и время, ID, сообщения журнала ... должен найти сообщение о начале и соответствующее закрывающем сообщение для culculate сроки.
выход должен быть
28 Jan 2014 00:08:24 |startmessage1 |Endmessage1 |00001| 6 seconds
28 Jan 2014 00:08:24 |startmessage2 |Endmessage2 |00001| 2 seconds
Мой код:.
my @startmsg= ("startmessage1","startmessage2","startmessage3");
my @endmsg= ("Endmessage1","Endmessage2","Endmessage3");
print 'THREAD ID,LOG DETAILS'."\n";
foreach my $filename (glob("$dir/*.out"))
{
open(my $fh, "<", $filename) or die "Could not open '$filename'\n";
while ($line = <$fh>)
{
my $i=2;
chomp($line);
if($line=~ $startmsg[$i])
{
chomp ($line);
my $threadid=$line;
$threadid =~ s!(\d*)\s*.*!$1!;
my $startdetails=$line;
$startdetails =~ s!(\d*)\s*(.*)!$2!;
chomp($threadid);
print "$threadid,$startdetails \n";
my $flag = 'False';
OUTER: while ($line = <$fh>)
{
if ($line=~ m/$threadid/)
if($line=~ $endmsg[$i])
{
chomp ($line);
my $enddetails=$line;
$enddetails =~ s!(\d*)\s*(.*)!$2!;
print "$threadid,$enddetails\n";
$flag='True';
last OUTER;
}
}
}
}
}
close($fh);
}
«Im в состоянии получить только один старт и конец сообщения в этой программе также я попытался с назначением все уставившись в одну переменную (все начальные сообщения в одной переменной и все конечные сообщения в одной переменной) .. проблема возникает после сообщения начала1, окончательное сообщение 2 получено и рассчитано неверная разница во времени. помогите мне исправить проблему «
Примечание. Начальные сообщения и конечные сообщения различны. Я просто привел примеры. Кроме того, в той же строке, что я выскабливание несколько вещей
Пожалуйста, помогите мне
Вы должны указать, что проблема с вашим кодом ... – MarcoS
я добавил свои проблемы. Спасибо – user3265858