#!/usr/bin/env ruby require 'trollop' require 'zlib' STDIN.set_encoding 'utf-8' STDOUT.set_encoding 'utf-8' opts = Trollop::options do opt :filter, "Filter if key does not appear in every file.", :type => :bool, :default => false end def usage puts "avg_weights_filter [--filter] +" exit 1 end usage if ARGV.size==0 h = {} ARGV.each { |fn| if File.extname(fn)=='.gz' f = Zlib::GzipReader.new(File.new(fn, 'rb')) else f = File.new fn, 'r' end while line = f.gets k, v = line.split v = v.to_f if h.has_key? k h[k] << v else h[k] = [v] end end f.close } n = ARGV.size.to_f h.each_pair { |k,a| next if opts[:filter] and a.size < n puts "#{k} #{a.inject(:+)/n}" }