Как просмотреть огромный текстовый файл через Vi или Gedit


24

Я сгенерировал wordlist.txt11 ГБ crunch-3.6. Когда я пытаюсь открыть файл с помощью Vi или gedit, у меня возникают проблемы из-за размера файла. Как я могу просмотреть этот файл?


8
Я не думаю, что это дубликат. Хотя он тесно связан, и некоторые ответы могут быть полезны, этот - о просмотре, а не редактировании. Принятый ответ не полезен для просмотра.
pLumo

1
Я согласен. Просмотр файла и редактирование файла - это не одно и то же, и различие становится более важным только тогда, когда файл очень большой.
Элия ​​Каган

Ответы:


43

Не используйте текстовый редактор для просмотра текста.

Есть лучшие инструменты:


Просмотр файлов с помощью less(Прокрутка с пробелом, Конец, Домой, PageUp, PageDown; Поиск с помощью «/ что-то»; Выход с помощью q).

Из lessруководства:

Меньше не нужно читать весь входной файл перед запуском, поэтому при больших входных файлах он запускается быстрее, чем текстовые редакторы, такие как vi (1).

Использование:

less wordlist.txt

Рассмотрим использование less -n:

-n или --line-номера:

Подавляет номера строк. Значение по умолчанию (для использования номеров строк) может привести к тому, что less запускается медленнее в некоторых случаях, особенно при очень большом входном файле. Подавление номеров строк с помощью -nопции позволит избежать этой проблемы.

(спасибо, что предложили опцию -n @pipe)


Используйте, grepчтобы получить только интересующие вас строки:

# Show all Lines beginning with A:
grep "^A:"  wordlist.txt

# Show all Lines ending with x and use less for better viewing
grep "x$"  wordlist.txt | less

Используйте headили, tailчтобы получить первые или последние n строк

head wordlist.txt
tail -n 200 wordlist.txt

Для редактирования текста, обратитесь к этому вопросу .


4
Обратите внимание, что moreзагрузит весь файл в память, в отличие от less. Если он такой большой, я бы посоветовал не использовать его. Лучшим вариантом, безусловно, будет использовать grep.
Nepho

1
Мой комментарий на самом деле может быть ложным. Я начал проверять moreи lessисходный код, и оба, кажется, используют либо, openлибо fopen, что, насколько я знаю, ничего не меняет в отношении способа загрузки файла
Nepho

2
Согласовано. moreЭто очень устаревшая утилита, если lessона доступна, я не думаю о какой-либо причине, по которой вы бы ее использовали more.
Nepho

1
@Nepho, moreимеет одно огромное преимущество перед less: он не поддерживает LESSOPENвходной препроцессор. Если вы пытаетесь просмотреть необработанный текст справочной страницы или чего-то еще, печатать гораздо быстрее, more my_docs.manчем копаться в lessдокументации, чтобы выяснить, как подавить препроцессор.
Марк

1
Я предлагаю вызывать меньше, используя что-то вроде less -nSбольших файлов, чтобы немного ускорить процесс.
труба

10

Зачастую достаточно просто «grep», чтобы найти то, что вам нужно.

Если вам нужно больше «контекста» вокруг конкретной строки, то используйте «grep -n», чтобы найти номера строк интересующих строк, а затем используйте sed, чтобы распечатать «кусок» файла вокруг этой строки:

$ grep -n 'word' file 
123:A line with with word in it 

$ sed -n '120,125p' file 
A line 
Another line
The line before
A line with with word in it 
The line after
Something else

10
нет необходимости в sed, вы можете использовать grep -Bи -A печатать строки B efore и A fter ...
pLumo

7
@RoVo Или -Cдля C (как до, так и после).
wjandrea
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.