2つのファイルを1つのファイルにまとめる時、ソートしてまとめる方法 in Ruby
2つのテキストファイルを、日付などでソートしながらまとめていく方法
Rubyを用いて、2つのファイルをソートした状態で1つのファイルにまとめる方法
例えば
textfile_1.txt
2015/09/07 15:12:07 ああああああ
2015/09/07 15:12:10 ああああああ
2015/09/07 15:12:19 ああああああ
textfile_2.txt
2015/09/07 15:12:08 いいいいいい
2015/09/07 15:12:09 いいいいいい
2015/09/07 15:12:24 いいいいいい
という2つのファイルがあって、ひとつのテキストファイル(textfile_3.txt)にまとめたい時
時刻の古いほうから順番に並べ替えてまとめたい時の方法
汚いコードだけど一応できた
なんとなく変数もたくさん増やしてますが、適宜削除してかまいません (array_fileとかいちいち作らなくてもいけるので)
# encoding:utf-8 require 'time' File.open('textfile_3.txt', "w") do |file| File.open('textfile_1.txt') do |f| File.open('textfile_2.txt') do |g| array1 = [] array2 = [] f.each do |i| array1.push(i) # textfile_1の内容を配列array1に格納 end g.each do |i| array2.push(i) # textfile_2の内容を配列array2に格納 end array_mix = array1.concat(array2) # array1とarray2を合わせた配列(array)を生成 array_file = array_mix.sort {|a, b| Time.parse(a) <=> Time.parse(b)} # array_mixを、Timeクラスを用いてソートして、新しくarray_file配列とする array_fileの内容を、textfile_3.txtに書き込む array_file.each do |i| file.puts(i) end end end end
以上で、下記のtextfile_3.txtが生成されるはずです
textfile_3.txt
2015/09/07 15:12:07 ああああああ
2015/09/07 15:12:08 いいいいいい
2015/09/07 15:12:09 いいいいいい
2015/09/07 15:12:10 ああああああ
2015/09/07 15:12:19 ああああああ
2015/09/07 15:12:24 いいいいいい
arrayのソートの方法は
http://ref.xaio.jp/ruby/classes/array/sort
と Timeクラス
http://docs.ruby-lang.org/ja/2.2.0/method/Time/s/parse.html
を参照してください
Time.parseした配列は、単純に比較できます
参考 http://www.namaraii.com/rubytips/?%E6%97%A5%E4%BB%98%E3%81%A8%E6%99%82%E5%88%BB#l6
- 作者: 高橋征義,後藤裕蔵,まつもとゆきひろ
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2013/06/04
- メディア: 単行本
- この商品を含むブログ (33件) を見る