diff -r f57f08cb4e1d -r a5c7bdb47359 williamr/sbs_findstr.pl --- a/williamr/sbs_findstr.pl Mon Jun 29 17:33:23 2009 +0100 +++ b/williamr/sbs_findstr.pl Fri Jul 03 16:00:39 2009 +0100 @@ -15,24 +15,48 @@ # Filter an SBSv2 log to keep only recipes which match a specified RE use strict; +use Getopt::Long; + +my $sort_recipes = 0; +GetOptions( + "s|sort" => \$sort_recipes, # sort output by line + ); my $expression = shift @ARGV; my $line; my $skipping = 1; my $current_target = ""; +my @buffer = (); +my %recipes; @ARGV = map {glob} @ARGV; +sub save_buffer + { + return if (scalar @buffer == 0); + if ($sort_recipes) + { + my $recipe = shift @buffer; + $recipes{$recipe} = join("",@buffer); + } + else + { + print @buffer; + } + @buffer = (); + } + while ($line =<>) { if (substr($line,0,9) eq "") { - print $line if ($skipping == 0); + push @buffer, $line if ($skipping == 0); $skipping = 1; # set this to 0 to get the "between recipes" stuff next; } if (substr($line,0,8) eq "