#!/usr/bin/ruby require 'zipf' require 'optimist' conf = Optimist::options do opt :min, "minimum #tokens", :type => :int, :default => 1 opt :max, "maximum #tokens", :type => :int, :default => 80, :short => '-n' opt :in_f, "input 'French' file", :type => :string, :required => true opt :in_e, "input 'English' file", :type => :string, :required => true opt :out_f, "output 'French' file", :type => :string, :required => true opt :out_e, "output 'English' file", :type => :string, :required => true opt :out_id, "output line Nos", :type => :string, :required => true end files = {} files[:f_file] = ReadFile.new conf[:in_f] files[:e_file] = ReadFile.new conf[:in_e] files[:f_out_file] = WriteFile.new conf[:out_f] files[:e_out_file] = WriteFile.new conf[:out_e] files[:id_out_file] = WriteFile.new conf[:out_id] i = 0 while f_line = files[:f_file].gets e_line = files[:e_file].gets f_line.strip! e_line.strip! a = f_line.split b = e_line.split if a.size >= conf[:min] and a.size <= conf[:max] and \ b.size >= conf[:min] and b.size <= conf[:max] files[:f_out_file].write "#{f_line}\n" files[:e_out_file].write "#{e_line}\n" files[:id_out_file].write "#{i}\n" end i+=1 end files.values.each{ |f| f.close }