ruby 2つのファイルを一行ずつ交互にマージしたい
ひとつめのファイル samplefile1
1 2 3 4 5 6 7 8 9
ふたつめのファイル samplefile2
one two three four five six seven eight nine ten eleven
とあった時に、こんな結果がほしい。という時。
1 one 2 two 3 three 4 four 5 five 6 six 7 seven 8 eight 9 nine ten eleven
こうしました。
今回は samplefile1.size < samplefile2.size な時に、samplefile2 の文字列だけ後ろに出力しておきたかったので、a2.zip(a1).map(&:reverse).flatten.compact のようにしました。
f1, f2 = %w(samplefile1 samplefile2) a1 = File.readlines(f1) a2 = File.readlines(f2) a = if a1.size < a2.size a2.zip(a1).map(&:reverse).flatten.compact else a1.zip(a2).flatten end File.open("outfile", "w") do |f| a.each {|s| f.write(s) } end
もっと良いなにかがあれば知りたい。