in reply to Re^6: Log Parsing
in thread Log Parsing
To get multiple records for a child runID use a hash of arrays (HoA)
poj#!/usr/bin/perl use strict; #use Data::Dump 'pp'; my %data = (); my @id = (); my $reqid = '8274'; my $infile = 'worker.log'; my $outfile = 'data.CSV'; open IN,'<',$infile or die "$!"; # input while (<IN>) { chomp; next unless /Task:id=(\d+)/; my $taskid = $1; my (undef,$timestamp,undef) = split /\s+/,$_,3; if (/(Started|Done).+topic (\d+_(\d+)_\d+_IN_(\d).*)/){ #print "$1 $2 $3 $4\n"; $data{$3}[$4]{$1} = $timestamp; $data{$3}[$4]{'Topic'} = $2; } while ( /\{(\d+)-SUCCESSFUL\}/g ){ push @id,$1 if ($taskid eq $reqid); } } close IN; #pp \@id; #pp \%data; # output open OUT,'>',$outfile or die "$!"; my @cols = qw(Topic Started Done); printf OUT "%s,%s,%s\n",@cols; for my $id (sort @id){ if (exists $data{$id}){ for my $rec ( @{$data{$id}} ){ printf OUT "%s,%s,%s\n", map { $rec->{$_} } @cols; } }else { print OUT "$id- no data\n"; } } close OUT;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^8: Log Parsing
by piyushmnnit06 (Novice) on Apr 03, 2017 at 11:02 UTC | |
by piyushmnnit06 (Novice) on May 10, 2017 at 11:54 UTC | |
by poj (Abbot) on May 10, 2017 at 12:32 UTC | |
by piyushmnnit06 (Novice) on May 11, 2017 at 07:54 UTC | |
by poj (Abbot) on May 11, 2017 at 09:01 UTC | |
|