in reply to Re^4: Merge 2 or more logs, sort by date & time
in thread Merge 2 or more logs, sort by date & time
Ok, try
poj#!perl use strict; use Time::Piece; my @CommonLogFiles = qw( log1.txt log2.txt); my $re = qr[TIMESTAMP=... (... +\d{1,2} \d\d:\d\d:\d\d 20\d\d)]; my @records = (); for my $log (@CommonLogFiles) { open LOG, '<', $log or die "Could not open $log: $!\n"; print "Just opened $log...\n"; my $record; my $datetime; while (<LOG>){ # start of record if (/^<\d+>/){ $record = "[$log] ".$_; next; } else { $record .= $_; } # extract datetime if (/$re/){ $datetime = Time::Piece->strptime($1,'%b %d %T %Y')->datetime; #print "$1 => $datetime\n" } # save record with datetime if (/END OF REPORT/){ $record .= "\n"; if ($record =~ /MSGCLS/m){ push @records,[$record,$datetime]; $record = ''; } } } close LOG; }; # Schwartzian_transform my @sorted = map { $_->[0] } sort { $a->[1] cmp $b->[1] } @records; open SORTED,'>','sorted.log' or die "$!"; print SORTED $_ for @sorted; close SORTED;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^6: Merge 2 or more logs, sort by date & time
by ImJustAFriend (Scribe) on Nov 02, 2018 at 18:36 UTC |