Вы знаете, сколько строк, или есть какие-либо другие подсказки об этом файле? Вы должны делать это снова и снова, или это только один раз?
Если бы мне пришлось сделать это один раз, я бы загрузил файл в vim, посмотрел номер последней строки и затем удалил из последней строки, которую я хочу, до конца:
:1234567,$d
Общий способ программирования состоит в том, чтобы сделать это в два прохода: один, чтобы определить количество строк, а затем один, чтобы избавиться от строк.
Простой способ - напечатать нужное количество строк в новый файл. Это эффективно только с точки зрения циклов и, возможно, небольшого перебивания диска, но у большинства людей их много. Некоторые вещи из perlfaq5 должны помочь. Вы выполнили свою работу и продолжаете жить.
while( )
{
print $out;
last if $. > $last_line_I_want;
}
Если вам нужно что-то сделать много или размер данных слишком велик, чтобы переписать его, вы можете создать индекс строк и смещений байтов и truncate () файл до нужного размера , Когда вы ведете индекс, вам нужно только обнаружить новые окончания строк, потому что вы уже знаете, где остановились. Некоторые модули обработки файлов могут обрабатывать все это для вас.