Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Переписать файл задом-наперед


Автор: Suppir 16.6.2011, 14:26
Есть файл, 100 тыс. строк. Нужно записать этот же файл, но задом-наперед. То есть последняя строка должна быть первой, предпоследняя - второй и т.д. Подскажите самый быстрый способ?

Автор: sir_nuf_nuf 16.6.2011, 14:54
предлагаю такой.
1) узнать размер текущего файла  - total_size
2) читать по строкам
  3) в новом файле делаем seek(total_size - rows_size)
  4) выводим туда строку
  5) rows_size  +=  размер текущей строки

Автор: arto 16.6.2011, 15:08
man tac

Автор: afiskon 17.6.2011, 06:30
Цитата

Подскажите самый быстрый способ?

100 000 строк - это не много, быстрее всего считать их в память целиком и вывести в обратном порядке:

Код

cat README.TXT | perl -e 'while(<>){push @t, $_;}while(@t){print pop @t;}'

Автор: Suppir 17.6.2011, 08:03
Всем спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)