Я часто имею дело с невероятно большими файлами журналов (> 3 ГБ). Я заметил, что производительность менее страшна с этими файлами. Часто я хочу перейти к середине файла, но когда я говорю меньше, чтобы перейти вперед на 15 миллионов строк, это занимает минуты ...
Проблема, которую я представляю, состоит в том, что меньше нужно сканировать файл на наличие символов \ n, но это занимает слишком много времени.
Есть ли способ заставить его просто стремиться к явному смещению? например, стремиться к байтовому смещению 1,5 миллиарда в файле. Эта операция должна быть на несколько порядков быстрее. Если меньше не дает такой возможности, есть ли другой инструмент, который делает?
perl -pi -e 's/\n//g;' <filename>
Ответы:
Вы можете остановить меньше от подсчета строк, как это
less -n
Чтобы перейти к определенному месту, как, скажем, 50%,
less -n +50p /some/log
это было мгновенно для меня в лог-файле 1,5 ГБ.Редактировать: Для определенного смещения байта:
less -n +500000000P ./blah.log
источник
Меньше, будучи пейджером, изначально ориентировано на линию. Когда вы запускаете, если это большой файл, он говорит «подсчет номеров строк», и вы нажимаете ESC, чтобы остановить это, но в противном случае, он делает строки. Это то, что он делает.
Если вы хотите прыгнуть прямо в середину файла и пропустить начало, вы всегда можете просто пропустить начало; Я хотел бы сделать что - то подобное
tail -c +15000000 /some/log | less
.источник
tail -c ...
либо у вас страннаяlast
команда.less
кажется, есть небольшие накладные расходы из настроек локалиЕсли вы используете только символы ASCII, вы можете немного ускорить его, используя:
В моем случае пропускная способность увеличилась с ~ 30 Мбит / с до ~ 50 Мбит / с (скорость зависит от процессора)
источник