Supongamos que tengo un archivo con muchas palabras, quiero encontrar sólo la primera palabra con el patrón "xyz". ¿Cómo lo hago si hay varias palabras con este patrón en la misma línea?
-m
devuelve todas las palabras en la primera línea en la que coincide. Sólo necesito el comando grep.
Respuesta1
Por defecto grep
imprime ellíneascoincide con un patrón, por lo que si el patrón aparece una o más veces en una línea, grep
imprimirá esa línea completa.
Agregar la bandera -m 7
le indicará grep
que imprima solo las primeras 7 líneas donde aparece el patrón.
Entonces esto debería hacer lo que quieres (no lo he probado):
grep -o -m 1 xyz myfile | head -1
Editar: como lo señaló @Kusalananda, no necesita estrictamente la -m
bandera, pero usarla significa que grep
no será necesario analizar todo el archivo y generará el resultado más rápido, especialmente si myfile
es un archivo grande.
Respuesta2
La respuesta a su pregunta está en la página de manual de grep:
grep -m1 'searchstring' file_name
La -m<number>
opción es la clave. -m1
solo mostrará la primera coincidencia, -m2
las 2 primeras apariciones y así sucesivamente.