Cómo imprimir la primera coincidencia y detenerse con Grep

Concha de golpe

grep es una utilidad de búsqueda en Linux utilizada para buscar contenido. De forma predeterminada, imprimirá cualquier línea que coincida, lo que podría incluir una gran cantidad de resultados. Si solo le importa la primera coincidencia, puede limitar la salida solo a la primera línea.

Limitar la salida con grep -m

los grep El comando tiene un -m o --max-count parámetror, que puede resolver este problema, pero es posible que no funcione como cabría esperar.

Este parámetro hará grep deje de hacer coincidir después de encontrar N líneas coincidentes, lo que funciona muy bien ya que limitará la salida a una línea, que siempre contiene la primera coincidencia. Esto lo podemos verificar con el -n bandera para imprimir los números de línea.

grep -m 1 "foo" file

Sin embargo, esto tiene algunas desventajas que debe tener en cuenta. No se detiene después de N partidosse detiene después de N líneas. Esto causará grep para hacer coincidir varias veces en cada línea, lo que puede ser un problema cuando se usa con el -o flag, que imprime cada coincidencia en una nueva línea.

Además, son solo N líneas. por archivopor lo que cuando se usa contra varios archivos, imprimirá la primera línea coincidente para cada archivo.

Usando head para limitar la salida de grep

La alternativa es canalizar la salida a un comando diferente, head, que simplemente cortará la entrada después de N líneas. Todavía es un poco útil de usar -m 1 con grep sin embargo, ya que dejará de procesar archivos grandes si se encuentra una coincidencia antes.

grep "foo" file_one.txt | head -1

Esto funciona con el -o marca para imprimir solo la primera coincidencia, incluso si hay varias coincidencias en un archivo:

Sin embargo, tenga cuidado al usar esto con varios archivos. Usando head imprimirá la primera línea coincidente en cualquier archivo. Esto puede ser un problema como grep imprime la salida en el orden en que procesa los archivos, y es posible que no sepa el orden en que se procesarán los archivos a menos que los clasifique manualmente antes de pasarlos a grep.

Del mismo modo, también puede utilizar tail para imprimir la última línea coincidente.

Deja un comentario

En esta web usamos cookies para personalizar tu experiencia de usuario.    Política de cookies
Privacidad