# single_hash.rb # 内容 : 重複データ除去 # 前提 : 重複チェックしたいキーであらかじめソートしておく必要はない。 # Copyright (c) 2013-2015 Mitsuo Minagawa, All rights reserved. # (minagawa@fb3.so-net.ne.jp) # 使用方法 : c:\>ruby single_hash.rb # # 入力ファイル in1_file = open("double.txt","r") # 出力ファイル out1_file = open("single_only.txt","w") # 出力用ハッシュ out1 = Hash.new # 主処理 while (line1 = in1_file.gets) line1.chomp! #---区切り文字により、処理を変更する---------- #タブ区切りのとき # in1 = line1.split("\t",-1) #カンマ区切りのとき in1 = (line1 + ',') .scan(/"([^"\\]*(?:\\.[^"\\]*)*)",|([^,]*),/) .collect{|x,y| y || x.gsub(/(.)/, '\1')} #キー項目が単独のとき in1_key = in1[0] #キー項目が複数のとき #1番目と2番目と3番目の項目がキーとなる場合 # in1_key = in1[0] + in1[1] + in1[2] # ハッシュのキーが存在しない場合 unless (out1.include?(in1_key)) double = [] double.push(line1) out1[in1_key] = double end end # ハッシュのキーをソートして出力する out1.sort_by{|key| key }.each{|key,value| w_temp = [value].join("\n") out1_file.print "#{w_temp}\n" } # ファイルのクローズ in1_file.close out1_file.close