Como visualizar um enorme arquivo de texto via Vi ou gedit

24

Eu gerei um wordlist.txtde 11 GB por crunch-3.6. Quando tento abrir o arquivo com o Vi ou o gedit, encontro problemas devido ao tamanho do arquivo. Como posso ver este arquivo?

vais sai
fonte
8
Eu não acho que é uma duplicata. Embora suas respostas estreitamente relacionadas e algumas respostas possam ser úteis, esta é sobre visualizar e não editar. A resposta aceita não é útil para visualização.
PLumo
1
Concordo. Visualizar e editar um arquivo não é a mesma coisa, e a distinção só se torna mais importante quando o arquivo é muito grande.
Eliah Kagan

Respostas:

43

Não use um editor de texto para visualizar o texto.

Existem melhores ferramentas:


Visualize arquivos com less(Role com Espaço, Fim, Página Inicial, PageUp, PageDown; Pesquise com "/ something"; Deixe com q).

Do lessmanual:

Menos não precisa ler o arquivo de entrada inteiro antes de iniciar; portanto, com arquivos de entrada grandes, ele inicia mais rapidamente do que os editores de texto como vi (1).

Uso:

less wordlist.txt

Considere o uso de less -n:

-n ou --line-numbers:

Suprime os números de linha. O padrão (para usar números de linha) pode fazer com que menos sejam executados mais lentamente em alguns casos, especialmente com um arquivo de entrada muito grande. Suprimir os números de linha com a -nopção evitará esse problema.

(obrigado por sugerir -n opção @pipe)


Use greppara obter apenas as linhas de seu interesse:

# 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

Use headou tailpara obter as primeiras ou últimas n linhas

head wordlist.txt
tail -n 200 wordlist.txt

Para editar texto, consulte esta pergunta .

pLumo
fonte
4
Observe que more, ao contrário, o arquivo inteiro será carregado na memória less. Se for tão grande, eu aconselho a não usá-lo. A melhor opção seria definitivamente usar grep.
Nepho 9/11
1
Meu comentário pode ser falso. Comecei a verificar os doismore e lesscódigo fonte, e ambos parecem usar openou fopen, o que não muda nada sobre a forma como o arquivo é carregado, tanto quanto eu sei
nepho
2
Acordado. moreé um utilitário muito antigo, se lessestiver disponível, não penso em nenhum motivo pelo qual você usaria more.
Nepho 9/11
1
@ Napho, moretem uma enorme vantagem sobre less: ele não suporta o LESSOPENpré-processador de entrada. Se você está tentando visualizar o texto bruto de uma página de manual ou algo assim, é muito mais rápido digitar more my_docs.mando que procurar naless documentação para descobrir como suprimir o pré-processador.
Mark
1
Sugiro invocar menos usando algo como less -nSarquivos enormes, para acelerar um pouco as coisas.
tubo
10

Frequentemente, apenas "grep" é suficiente para encontrar o que você precisa.

Se você precisar de mais "contexto" em torno de uma linha específica, use "grep -n" para encontrar os números das linhas de interesse e, em seguida, use sed para imprimir um "pedaço" do arquivo torno dessa linha:

$ 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
Phill W.
fonte
10
não há necessidade de sed, você pode usar grep -Be -A para imprimir linhas B ntes e A epois ...
pLumo
7
@RoVo Ou -Cpara um pedaço C (antes e depois).
Wjandrea