varios uso usar regulares patrones hacer expresiones egrep doble comando avanzado anidar grep

uso - usar grep



Grep solo el primer partido y parada (4)

Estoy buscando un directorio de forma recursiva utilizando grep con los siguientes argumentos con la esperanza de devolver solo la primera coincidencia. Desafortunadamente, devuelve más de uno, de hecho dos la última vez que miré. Parece que tengo demasiados argumentos, especialmente sin obtener el resultado deseado. : - /

# grep -o -a -m 1 -h -r "Pulsanti Operietur" /path/to/directory

devoluciones:

Pulsanti Operietur Pulsanti Operietur

Tal vez grep no es la mejor manera de hacer esto? Dime, muchas gracias.


Mi programa grep-a-like ack tiene una opción -1 que se detiene en la primera coincidencia encontrada en cualquier lugar. Es compatible con el -m 1 que se refiere @mvp también. Lo puse ahí porque si estoy buscando un árbol grande de código fuente para encontrar algo que sé que existe en un solo archivo, no es necesario encontrarlo y tener que presionar Ctrl-C.


Puede canalizar el resultado de grep para head junto con stdbuf .

Tenga en cuenta que para garantizar la detención después de la coincidencia Nth, debe usar stdbuf para asegurarse de que grep no stdbuf en búfer su salida:

stdbuf -oL grep -rl ''pattern'' * | head -n1 stdbuf -oL grep -o -a -m 1 -h -r "Pulsanti Operietur" /path/to/dir | head -n1 stdbuf -oL grep -nH -m 1 -R "django.conf.urls.defaults" * | head -n1

Tan pronto como el head consume 1 línea, finaliza y grep recibe SIGPIPE porque aún produce algo en la tubería mientras el head se fue.

Esto asumió que ningún nombre de archivo contiene nueva línea.


Un solo forro, usando find :

find -type f -exec grep -lm1 "PATTERN" {} /; -a -quit


-m 1 significa devolver la primera coincidencia en cualquier archivo dado. Pero todavía seguirá buscando en otros archivos. Además, si hay dos o más coincidentes en la misma línea, se mostrarán todos.

Puedes usar head -1 para resolver este problema:

grep -o -a -m 1 -h -r "Pulsanti Operietur" /path/to/dir | head -1