#!/usr/bin/env ruby require 'zipf' require 'optimist' require 'zlib' conf = Optimist::options do opt :weights_files, "a number of weights files: name value", :required => true opt :filter, "Filter if key does not appear in every file.", :type => :bool, :default => false end h = {} ARGV.each { |fn| f = ReadFile.new fn 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,w| next if conf[:filter] and w.size < n puts "#{k} #{w.inject(:+)/n}" }