Як переглянути величезний текстовий файл через Vi або gedit


24

Я створив a wordlist.txt 11 Гб за рік crunch-3.6. Коли я намагаюся відкрити файл за допомогою Vi або gedit, у мене виникають проблеми через розмір файлу. Як я можу переглянути цей файл?


8
Я не думаю, що це дублікат. Хоча її тісно пов’язані та деякі відповіді можуть бути корисними, це стосується перегляду, а не редагування. Прийнята відповідь не корисна для перегляду.
pLumo

1
Я згоден. Перегляд файлу та редагування файлу - це не одне і те ж, і відмінність стає важливішою лише тоді, коли файл дуже великий.
Елія Каган

Відповіді:


43

Не використовуйте текстовий редактор для перегляду тексту.

Є кращі інструменти:


Переглядайте файли за допомогою less(Прокрутіть пробіл, Кінець, Домашня сторінка, PageUp, PageDown; Пошук за допомогою "/ щось"; Залиште з q).

З lessпосібника:

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

Використання:

less wordlist.txt

Розглянемо використання less -n:

-n або - рядкові числа:

Пригнічує номери рядків. За замовчуванням (використовувати номери рядків) у деяких випадках може спричинятись повільніше запуск, особливо з дуже великим вхідним файлом. Придушення номерів рядків за допомогою -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.
Нефо

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

2
Домовились. moreце дуже застаріла утиліта, якщо lessвона доступна, я не думаю про будь-яку причину, яку б ви використовували more.
Нефо

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

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

10

Часто достатньо просто «грепа», щоб знайти те, що потрібно.

Якщо навколо певного рядка вам потрібно більше "контексту", тоді використовуйте "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.