#!/usr/bin/perl $file=$ARGV[0]; $collumn=$ARGV[1]; @vmstat = split /\s+/,"r b w swpd free buff cache si so bi bo in cs us sy id"; open (FILE, "$file") or die "cant open file: $file"; #print "Starting first round"; while ( $l = ) { @line = split /\s+/, $l; if ( "$l" =~ /(\d+)/ ) { for ($i=1;$i <= 16; $i++){ $number = $line[$i]; $sum[$i] += $number; $count[$i]++; #print "."; if ( $number > $max[$i] ) { $max[$i] = $number; } } } #print "\n"; } for ($i=1;$i <= 16; $i++){ $average[$i] = $sum[$i]/$count[$i]; } seek(FILE, 0,0); while ( $l = ) { @line = split /\s+/, $l; if ( "$l" =~ /(\d+)/ ) { for ($i=1;$i <= 16; $i++){ $number = $line[$i]; $temp2[$i] = (($number - $average[$i])**2); $temp[$i] += $temp2[$i]; } } } print "Writing statistics from datafile: $file\n"; print " n sum max average stddev\n"; for ($i=1;$i <= 16; $i++){ $temp2[$i] = $temp[$i] / ($count[$i] - 1); $stddev[$i] = sqrt $temp2[$i]; printf("%-5s %7d %15lu %9d %10.3f %10.3f\n",$vmstat[$i-1],$count[$i],$sum[$i],$max[$i],$average[$i],$stddev[$i]); } close(FILE); #print "n: $count\n"; #print "sum: $sum\n"; #print "average: ".$average."\n"; #print "max: $max\n"; #print "StdDev: $stddev\n";