-
Utilice less
en una ventana de terminal. Te mostrará una página a la vez del archivo, sólo cargará esa cantidad en la memoria, así que puedes navegar por archivos de varios TB con él si quieres.
Probablemente debería añadir el -n
para evitar less
de intentar calcular los números de las líneas. Así que:
less -n /path/to/file
Recuerda que puedes escribir less -n
(no olvides el espacio final) y arrastra y suelta el archivo desde el Finder a la ventana del Terminal para añadir la ruta a ese archivo.
-
Una vez que esté viendo el archivo en less
puedes hacerlo:
- navegar con las flechas arriba/abajo,
space
(una página más abajo), b
(una página atrás)...
- búsqueda mediante
/
. También puede buscar líneas que no contengan un patrón con /!
. La búsqueda inversa utiliza ?
. Pero todas las búsquedas escanean el archivo completo. Mejor tenerlo en un SSD si lo haces mucho.
- navegar a una línea específica en el archivo usando <número> seguido de
G
(G mayúscula)
- navegar a una parte específica del archivo usando <número> seguido de
%
. Así que 50%
te llevará a la mitad del archivo, 90%
hasta el último 10%, etc.
Si su archivo de registro tiene marcas de tiempo y usted sabe cuándo quiere mirar, el enfoque más rápido es:
- abrir el archivo
-
Utilice una "búsqueda binaria" para encontrar la parte aproximada del archivo que le interesa:
- Tipo
50%
que le mostrará la mitad del archivo
- Si la parte que desea es posterior, vaya a
75%
Si no es así 25%
- Repita la operación hasta que se haya limitado a la parte pertinente
- Utilice una búsqueda regular (con
/
para avanzar o ?
para ir hacia atrás) para encontrar la línea exacta que buscas (basándote en la marca de tiempo exacta o en una palabra específica que sepas que muestra el problema).
Esto debería permitirle navegar rápidamente a la parte pertinente del archivo.
Si cree que va a realizar muchas búsquedas dentro de un subconjunto del archivo, puede utilizar alternativamente grep
con una combinación específica de fecha o fecha-hora (en el formato correcto) para extraer primero ese subconjunto a otro archivo más pequeño. Por ejemplo, si sabe que el fallo se ha producido hoy un poco después del mediodía mientras que su registro abarca meses, podría
grep '2020-02-17 12:' /path/to/file > extracted-log.txt
Esto le dará todas las líneas que contengan una marca de tiempo entre las 12:00:00 y las 12:59:59 inclusive. Por supuesto, el formato exacto dependerá del formato real utilizado para las marcas de tiempo.
grep
escaneará todo el archivo una vez para encontrar todas las líneas relevantes, lo que llevará un poco de tiempo en un archivo muy grande, pero entonces tendrás un archivo mucho más manejable.
Una alternativa puede ser utilizar dd
para "extraer" una parte del archivo original, utilizando los desplazamientos y las longitudes encontradas en less
( Ctrl-G
para obtener el desplazamiento actual). dd
es una herramienta muy poderosa pero puede ser muy peligrosa de usar, así que úsela con precaución (y definitivamente no como root
o con sudo
si no estás 100% seguro de lo que estás haciendo):
dd if=/path/to/original/file of=destination_file.txt bs=1 skip=<start offset> count=<length>
Tenga en cuenta que esto no es muy eficiente, es mejor utilizar un tamaño de bloque mayor ( bs
), idealmente una potencia de 2 como 1024, y dividir skip
y count
por ese tamaño de bloque.
Estoy seguro de que debe haber otras herramientas que hagan lo mismo, aunque estoy en blanco. Creo que algunas versiones de cat
puede hacerlo, pero no el de MacOS aparentemente.
17 votos
¿Necesita leer el archivo para ojearlo en busca de detalles o fallos interesantes o necesita buscar en el archivo? ¿Tiene el archivo una marca de tiempo consistente? Todas las respuestas que se dan a continuación son adecuadas, pero con más de 80 GB debería considerar algunas técnicas de análisis y búsqueda de registros para encontrar los datos que necesita para su análisis. Un ejemplo, pero fuera de tema, es la siguiente pregunta serverfault.com/questions/63297/good-free-tomcat-log-analyser
2 votos
Véase también: askubuntu.com/questions/28847/ y vi.stackexchange.com/questions/149/
0 votos
¿Sería razonable escribir un analizador para el archivo que extraiga los registros y los añada como filas en una base de datos? Las bases de datos están diseñadas para ordenar y buscar eficientemente millones de registros; los editores de texto no.