encuentre solo la primera aparición usando solo grep

encuentre solo la primera aparición usando solo grep

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? -mdevuelve todas las palabras en la primera línea en la que coincide. Sólo necesito el comando grep.

Respuesta1

Por defecto grepimprime ellíneascoincide con un patrón, por lo que si el patrón aparece una o más veces en una línea, grepimprimirá esa línea completa.

Agregar la bandera -m 7le indicará grepque 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 -mbandera, pero usarla significa que grepno será necesario analizar todo el archivo y generará el resultado más rápido, especialmente si myfilees 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. -m1solo mostrará la primera coincidencia, -m2las 2 primeras apariciones y así sucesivamente.

información relacionada