in reply to Find maximum number in text file and copying its full statement in new text file?

This loops through the lines, getting the Fanout value from the lines with INT_NET, and if it's equal to or greater than the maximum Fanout value so far, it saves that line along with its Fanout value as a 2-element array reference in the array @lines.

Once it's done, it has the largest Fanout value in $max and all the lines with that value (along with some other lines, possibly) as the first elements in the array @lines. The map/grep statement goes through those, grepping for the ones with the $max Fanout value and then using map to pull out the line itself and pass that to print.

#!/usr/bin/env perl use 5.010; use warnings; use strict; my $max = 0; my @lines; # 2D array, each element holding a line and its Fanout val +ue while (<DATA>){ if (/(\d+)\s+INT_NET/ and $1 >= $max ){ push @lines, [$_,$1]; $max = $1; } } print for map { $_->[0] } grep { $_->[1] == $max } @lines; __DATA__ Fanout Type Name -------------------------- 2 INT_NET Net : c_c Driver: c_pad 2 INT_NET Net : b_c Driver: b_pad 2 INT_NET Net : a_c Driver: a_pad 1 INT_NET Net : sum_c Driver: sum_1_SUM0_0 1 INT_NET Net : N_5 Driver: sum_1_CO0_i

Aaron B.
Available for small or large Perl jobs and *nix system administration; see my home node.

  • Comment on Re: Find maximum number in text file and copying its full statement in new text file?
  • Download Code