Я ненавижу писать это в одну строку, но это то, что вы спросили:
File.open("o_f.log", "w") { |o_f| o_f.write File.open("i_f.log") { |i_f| i_f.each_line.each_cons(55).inject{ |a, e| e } } }
Не работает, если nlines < 55
, поэтому немного лучшая версия будет:
File.open("o_f.log", "w") { |o_f| o_f.write File.open("i_f.log") { |i_f| i_f.each_line.inject([]){ |ls, l| ls.shift(54).unshift(l) }.reverse } }