Если вам нужно сделать это в командной строке, вы можете использовать команду оболочки head
.Отрицательное число строк покажет все, кроме последних N строк.
head --lines=-1 filename
Это расширение GNU, которое не будет работать с головкой BSD, например, со стандартной головкой, поставляемой с OS X.
Для Perl ваш код в основном правильный, но нет необходимости привлекать cat
.В противном случае вы читаете файл дважды.Вы можете передать имя файла напрямую.Кроме того, -l
фактически ничего не делает, удаляя символ новой строки со входа и возвращая его на выход.Наконец, нет необходимости в -a
, так как это расточительно разбивает каждую строку на @F
, который не используется.
perl -ne 'print if not eof' filename