Situación: tengo que buscar la última aparición de una cadena en un log gigantesco (porque quiero encontrar la última vez que se registró cierto evento).

Problema: ¿cómo encontrarla lo más rápidamente posible?

Solución: ejecutar una búsqueda en orden reverso a partir del final del archivo utilizando less.



less es un programa similar a more (herramienta para mostrar texto por pantalla), pero con mejores características. No necesita leer la entrada completa antes de comenzar a mostrar salida por pantalla, por lo cual los archivos de gran tamaño comienzan a visualizarse más rápidamente que con otros editores como vi o nano. Sus comandos están basados en more y vi

Abrir el archivo de log con less, por ejemplo:

root@hal9000:/home/emi # less /var/log/dmesg.today

Luego presionar la tecla End (o Fin en teclados españoles) para posicionarse en el final del archivo:

Se observa el mensaje (END) en la línea de comandos (última línea de pantalla).

Para realizar una búsqueda se debe utilizar la tecla / seguida del texto a buscar (por ejemplo "FreeBSD"):

La cadena a buscar es sensible a mayúsculas, por lo que no es lo mismo "freebsd" que "FreeBSD".

Al presionar la tecla "Intro" o "Enter" comienza la búsqueda en orden directo (de principio a fin del archivo), pero como estamos posicionados al final del archivo muy probablemente no haya resultados (salvo que la cadena aparezca en la pantalla actual):

Sin embargo, es posible buscar en orden reverso (de fin a principio, de atrás hacia adelante) utilizando el comando N, esto es, letra ene mayúscula. Para ello presionar la combinación de teclas Shift+N:

De esta forma se obtiene la última aparición de la cadena en el archivo. Repetir esta combinación para seguir buscando de atrás hacia adelante:

Referencias

man less
man more
man vi


Tal vez pueda interesarte


Compartí este artículo