Как я могу прочитать строки из конца файла в Perl? - PullRequest
7 голосов
/ 19 ноября 2008

Я работаю над сценарием Perl для чтения файла CSV и выполнения некоторых вычислений. Файл CSV имеет только два столбца, что-то вроде ниже.

One Two
1.00 44.000
3.00 55.000

Теперь этот CSV-файл очень большой, может иметь размер от 10 МБ до 2 ГБ.

В настоящее время я беру CSV-файл размером 700 МБ. Я пытался открыть этот файл в блокноте, Excel, но похоже, что нет программного обеспечения, чтобы открыть его.

Я хочу прочитать, может быть последние 1000 строк из файла CSV и увидеть значения. Как я могу это сделать? Я не могу открыть файл в блокноте или любой другой программе.

Если я пишу сценарий Perl, мне нужно обработать весь файл, чтобы перейти к концу файла, а затем прочитать последние 1000 строк.

Есть ли лучший способ сделать это? Я новичок в Perl, и любые предложения будут оценены.

Я искал net, и есть несколько доступных скриптов, таких как File :: Tail, но я не знаю, будут ли они работать на windows?

Ответы [ 11 ]

0 голосов
/ 19 ноября 2008

Если вы знаете количество строк в файле, вы можете сделать

perl -ne "print if ($. > N);" filename.csv

где N - это $ num_lines_in_file - $ num_lines_to_print. Вы можете посчитать строки с

perl -e "while (<>) {} print $.;" filename.csv
...