in reply to last $n lines that match a criteria
#!/usr/bin/perl use strict; use File::ReadFileBackwards; my @instances = (); $file=File::ReadFileBackwards->new("/some/log/file"); while (@instances < 10 and defined($line = $file->readline)) { push @instances, $line; }
#!/usr/bin/perl use strict; use File::Tail; my @instances = (); $file=File::Tail->new("/some/log/file"); while (defined($line=$file->read)) { if ($line =~ m/criteria/) { my $discard = pop @instances if @instances > 10; push @instances, $line; } }
|
|---|