GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo excluir en Grep

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

En este artículo, le mostraremos cómo excluir una o varias 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 -v ( o --invert-match ) opción.

Por ejemplo, para imprimir las líneas que no contienen la cadena nologin usarías:

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

El -w opción le dice a grep para devolver solo aquellas líneas donde la cadena especificada es una palabra completa (entre caracteres que no son palabras).

Por defecto, grep distingue entre mayúsculas y minúsculas. Esto significa que los caracteres en mayúsculas y minúsculas se tratan como distintos. Para ignorar el caso al buscar, invoque grep con el -i opción.

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

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

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

Puedes usar -e opción tantas veces como necesites.

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

El siguiente ejemplo imprime las líneas que no contienen las cadenas nologin o bash :

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

GNU grep admite tres sintaxis de expresiones regulares, básica, extendida y compatible con Perl. Por defecto, grep interpreta el patrón como una expresión regular básica donde los metacaracteres como | pierden su significado especial y debe usar sus versiones con barra invertida.

Si usa la opción de expresión regular extendida -E , entonces el operador | no se debe escapar, como se muestra a continuación:

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

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

grep -v "^games" file.txt

La salida de un comando se puede filtrar con grep a través de la tubería, y solo las líneas que coincidan con un patrón determinado se imprimirán en el terminal.

Por ejemplo, para imprimir todos los procesos en ejecución en su sistema, excepto aquellos que se ejecutan como usuario "raíz", puede filtrar la salida de ps comando:

ps -ef | grep -wv root

Excluir directorios y archivos #

A veces, al realizar una búsqueda recursiva con -r o -R opciones, es posible que desee excluir directorios específicos del resultado de la búsqueda.

La principal diferencia entre -r o -R opciones es que cuando se invoca grep con mayúsculas R seguirá todos los enlaces simbólicos

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

Aquí hay un ejemplo que muestra cómo buscar la cadena linuxize en todos los archivos dentro de /etc , excluyendo /etc/pki directorio:

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

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

Por ejemplo, para encontrar archivos que contengan la cadena 'gnu' en su sistema Linux excluyendo el proc , boot y sys directorios que ejecutarí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 --exclude opción.

En el siguiente ejemplo, estamos buscando en todos los archivos en el directorio de trabajo actual la cadena linuxize , excluyendo los archivos que terminan en .png y .jpg directorio:

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

Conclusión #

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


Linux
  1. Cómo encontrar un archivo en Linux

  2. ¿Cómo buscar en archivos específicos que coincidan con un patrón?

  3. Cómo encontrar texto específico usando GREP en Linux

  4. Usando grep para buscar en reversa

  5. ¿Cómo puedo buscar un patrón de varias líneas en un archivo?

Cómo buscar en Vim / Vi

Cómo realizar una búsqueda de patrones en archivos usando Grep

Cómo excluir en el comando Grep en Linux

Cómo buscar en Nano

Cómo usar grep en Linux

Cómo realizar una búsqueda Grep en todos los archivos y en todos los directorios