Cómo ver un gran archivo de texto a través de Vi o gedit

24

He generado un wordlist.txtde 11 GB por crunch-3.6. Cuando trato de abrir el archivo con Vi o gedit, me encuentro con problemas debido al tamaño del archivo. ¿Cómo puedo ver este archivo?

vais sai
fuente
8
No creo que sea un duplicado. Aunque está estrechamente relacionado y algunas respuestas pueden ser útiles, esta se trata de ver y no editar. La respuesta aceptada no es útil para ver.
pLumo
1
Estoy de acuerdo. Ver un archivo y editar un archivo no es lo mismo, y la distinción solo se vuelve más importante cuando el archivo es muy grande.
Eliah Kagan

Respuestas:

43

No use un editor de texto para ver el texto.

Hay mejores herramientas:


Ver archivos con less(Desplazarse con espacio, Fin, Inicio, Re Pág, Av Pág; Buscar con "/ algo"; Salir con q).

Del lessmanual:

Less no tiene que leer todo el archivo de entrada antes de comenzar, por lo que con archivos de entrada grandes se inicia más rápido que los editores de texto como vi (1).

Uso:

less wordlist.txt

Considere el uso de less -n:

-n o --line-números:

Suprime los números de línea. El valor predeterminado (para usar números de línea) puede hacer que se ejecute menos lentamente en algunos casos, especialmente con un archivo de entrada muy grande. Suprimir los números de línea con la -nopción evitará este problema.

(gracias por sugerir -n opción @pipe)


Use greppara obtener solo las líneas que le interesan:

# 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 heado tailpara obtener la primera o la última n líneas

head wordlist.txt
tail -n 200 wordlist.txt

Para editar texto, consulte esta pregunta .

pLumo
fuente
44
Tenga en cuenta que morecargará todo el archivo en la memoria, a diferencia de less. Si es tan grande, aconsejaría no usarlo. La mejor opción definitivamente sería usar grep.
Nepho
1
Mi comentario en realidad podría ser falso. Comencé a verificar ambos morey el lesscódigo fuente, y ambos parecen usar uno openo fopen, lo que no cambia nada con respecto a la forma en que se carga el archivo, que yo sepa
Nepho el
2
Convenido. morees una utilidad muy anticuada, si lessestá disponible no pienso en ninguna razón por la que usarías more.
Nepho
1
@Nepho, moretiene una gran ventaja sobre less: no admite el LESSOPENpreprocesador de entrada. Si está intentando ver el texto sin formato de una página de manual o algo así, es mucho más rápido escribir more my_docs.manque buscar en la lessdocumentación para descubrir cómo suprimir el preprocesador.
Mark
1
Sugiero invocar menos usando algo como less -nSarchivos grandes, para acelerar un poco las cosas.
tubería
10

A menudo, solo "grep" es suficiente para encontrar lo que necesita.

Si necesita más "contexto" alrededor de una línea en particular, use "grep -n" para encontrar los números de línea de las líneas de interés, luego use sed para imprimir un "fragmento" del archivo alrededor de esa línea:

$ 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.
fuente
10
sin necesidad de sed, se puede utilizar grep -B, y -A para imprimir las líneas B ntes y un espués ...
Plumo
77
@RoVo O -Cpara un trozo C (tanto antes como después).
wjandrea