#!/usr/local/bin/ruby include Math if ARGV.size() < 1 then puts "Usage:ruby parse_log.rb filename" exit end def get_log_time(filename) logArray = File.open(filename, "r") do |file| file.readlines.select{|line| !(line =~ /mass/) } end totalFailed = 0 totalTime = 0 timeArray = [] logArray.each {|line| tokens = line.split(' ') float = sprintf( "%.0f",tokens[2].to_i) time = tokens[0]. + "." + float.to_s timeArray.push(time.to_f) totalTime = totalTime + time.to_f totalFailed = totalFailed + tokens[4].to_i } avarage = totalTime / timeArray.size() avarage = sprintf("%.3f", avarage).to_f totalN = 0 puts "avarage: "+ avarage.to_s timeArray.each {|time| totalN = totalN + (time.to_f - avarage) totalN = sprintf("%.3f", totalN).to_f puts "time: "+ time.to_s puts "time - avarage :" + sprintf("%.3f",(time - avarage).to_s) puts "totalN: "+totalN.to_s } variance = totalN / timeArray.size() variance = sprintf("%.3f", variance).to_f puts "variance: " + variance.to_s sigma = Math.sqrt(variance) puts sigma if totalFailed != 0 then puts "Failed " + totalFailed.to_s end end ARGV.each {|filename| get_log_time(filename) }