Cómo excluir palabras y patrones en Grep

19 mag 2021 3 min di lettura
Cómo excluir palabras y patrones en Grep
Indice dei contenuti

Introducción

grep es una poderosa herramienta de línea de comando que se utiliza para buscar en uno o más archivos de entrada líneas que coincidan con una expresión regular y escribe cada línea coincidente en la salida estándar.

En este artículo, le mostraremos cómo excluir una o más palabras, patrones o directorios al buscar con grep.

Excluir palabras y patrones

Para mostrar solo las líneas que no coinciden con un patrón de búsqueda, use la opción -v (o --invert-match).

Por ejemplo, para imprimir líneas que no contienen la cadena nologinque usaría:

grep -wv nologin /etc/passwd
root:x:0:0:root:/root:/bin/bash
git:x:994:994:git daemon user:/:/usr/bin/git-shell
noviello:x:1000:1000:noviello:/home/noviello:/bin/bash

La opción le -w permite grep devolver solo aquellas líneas donde la cadena especificada es una palabra completa (encerrada por caracteres no alfanuméricos).

De forma predeterminada, distingue entre grepmayúsculas y minúsculas. Esto significa que los caracteres en mayúsculas y minúsculas se tratan como distintos. Para ignorar mayúsculas y minúsculas al buscar, invoca grepcon la opción -i.

Si la cadena de búsqueda incluye espacios, debe escribirse entre comillas simples o dobles.

Para especificar dos o más patrones de búsqueda, use la opción -e:

grep -wv -e nologin -e bash /etc/passwd

Puede utilizar la opción -etantas veces como desee.

Otra opción para excluir múltiples patrones de búsqueda es unir los patrones usando el operador OR |.

El siguiente ejemplo imprime líneas que no contienen cadenas nologino bash:

grep -wv 'nologin\|bash' /etc/passwd

GNU grepadmite tres sintaxis de expresión regular: básica, extendida y compatible con Perl. De forma predeterminada, grepinterpreta el patrón como una expresión regular básica donde los metacaracteres |pierden su significado especial y debes usar sus versiones de barra invertida.

Si usa la opción de expresión regular extendida -E, no es necesario escapar del operador |, como se muestra a continuación:

grep -Ewv 'nologin|bash' /etc/passwd

Puede especificar varias coincidencias posibles que pueden ser cadenas literales o conjuntos de expresiones. En el siguiente ejemplo, se excluyen las líneas games  donde la cadena está al principio de una línea:

grep -v "^games" file.txt

La salida de un comando se puede filtrar grepmediante una tubería y solo se imprimirán en el terminal las líneas que coincidan con un patrón determinado.

Por ejemplo, para imprimir todos los procesos que se ejecutan en su sistema, excepto los que se ejecutan como usuario "root", puede filtrar la salida del comando ps:

ps -ef | grep -wv root

Excluir directorios y archivos

A veces, cuando se realiza una búsqueda recursiva con las opciones -ro -R, se pueden excluir directorios específicos del resultado de la búsqueda.

La principal diferencia entre las opciones -ro -Res que cuando se invoca grep con mayúsculas R, seguirá todos los enlaces simbólicos .

Para excluir un directorio de la búsqueda, use la opción --exclude-dir. La ruta al directorio excluido es relativa al directorio de búsqueda.

A continuación, se muestra un ejemplo que muestra cómo buscar la cadena novielloen todos los archivos incluidos /etc, excluyendo el directorio /etc/pki:

grep -R --exclude-dir=pki noviello /etc

Para excluir varios directorios, encierre los directorios excluidos entre llaves y sepárelos con comas sin espacios.

Por ejemplo, para buscar archivos que contengan la cadena 'GNU' en su sistema Linux excluyendo los directorios proc, booty sys  se correría:

grep -r --exclude-dir={proc,boot,sys} gnu /

Al utilizar la coincidencia de comodines, puede excluir archivos cuyo nombre base coincida con el GLOB especificado en la opción --exclude.

En el siguiente ejemplo, buscamos la cadena en todos los archivos del directorio de trabajo actual noviello, excluyendo los archivos que terminan en .pngy .jpg:

grep -rl --exclude=*.{png,jpg} noviello *

Conclusión

El comando le grep permite excluir plantillas y directorios al buscar archivos.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.