¿Cuál es la mejor manera de obtener solo la coincidencia final de una expresión regular en un archivo usando grep?
Además, ¿es posible comenzar a grepping desde el final del archivo en lugar del principio y detenerse cuando encuentra la primera coincidencia?
tac file | grep -m 1 pattern
grep -n
) en el archivo real, creotac
que debía evitarse, a menos que quisiera restarle algowc -l
. De lo contrariotac
, congrep -m1
tiene mucho sentido.grep
dejará de funcionar después del primer partido. sin-m 1
,grep
primero encontrará todos los patrones coincidentes en el archivo , luegohead
mostrará solo el primero, mucho menos eficiente. ¡Dennis, por favor considere publicar esto en una respuesta separada!Para alguien que trabaja con grandes archivos de texto en Unix / Linux / Mac / Cygwin. Si usa Windows, consulte esto sobre las herramientas de Linux en Windows: https://stackoverflow.com/questions/3519738/what-is-the-best-way-to-use-linux-utilities-under-windows .
Uno puede seguir este flujo de trabajo para tener un buen rendimiento:
zq
el paquete.Cita de su léame github:
Crear un índice
Consultando el índice
fuente
Siempre estoy usando cat (pero esto lo hace un poco más largo):
cat file | grep pattern | tail -1
Culparía a mi maestro del curso de administración de Linux en la universidad que ama los gatos :))))
- No tiene que atrapar un archivo antes de agarrarlo.
grep pattern file | tail -1
y es más eficiente también.fuente
cat
el archivo y canalizarlogrep
. Puedegrep
buscar el archivo directamente a través degrep pattern file
(y luego usarlotail
para devolver el último resultado), como en la respuesta de Cakemox.