El comando egrep pertenece a la familia del comando grep que se utiliza para la búsqueda de patrones en Linux. Si has utilizado el comando grep, egrep funciona igual que grep -E (grep Extended regex’). Egrep escanea un archivo específico, línea a línea, e imprime la(s) línea(s) que contienen la cadena de búsqueda/expresión regular. En este artículo, explicaremos 15 ejemplos útiles de los comandos egrep que ayudarán a los novatos e incluso a los expertos a realizar búsquedas significativas en LinuxHemos realizado estos ejemplos en un sistema Debian 10 Buster pero pueden ser fácilmente replicados en la mayoría de las distros de Linux.

Ejemplo 1: Buscar una cadena específica en un archivo

Este es el uso más común del comando egrep. Lo que se hace es que se especifica una cadena que se quiere buscar, y el nombre del archivo en el que se quiere buscar esa cadena. El resultado muestra toda la línea que contiene la cadena buscada.

Sintaxis:

$ egrep «search_string» filename

Ejemplo:

$ egrep debian samplefile.txt

En este ejemplo, he buscado la palabra «debian» en el archivo de texto especificado. Puedes ver cómo los resultados muestran toda la línea que contiene la palabra «debian»:

Ejemplo 2: Buscar una cadena específica en múltiples archivos

Con el comando egrep, puedes buscar una cadena entre múltiples archivos que residen en el mismo directorio. Sólo tiene que ser un poco más específico al proporcionar un «patrón» para los archivos buscados. Esto quedará más claro con el ejemplo que presentaremos.

Sintaxis:

$ egrep «buscar_cadena» filename_pattern

Ejemplo:

Aquí, buscaremos la palabra «debian» en todos los archivos .txt especificando el patrón de nombre de archivo de la siguiente manera:

$ egrep «debian» *.txt

El comando ha impreso todas las líneas, junto con los nombres de archivo que contienen la palabra «debian» de todos los archivos .txt del directorio actual.

Ejemplo 3: Buscar recursivamente la cadena en todo el directorio

Cuando quiera buscar una cadena en todos los archivos de un directorio y sus subdirectorios, puede hacerlo utilizando la bandera -r con el comando egrep.

Sintaxis:

$ egrep -r «cadena_buscada» *

Ejemplo:

En este ejemplo, estoy buscando la palabra «muestra» en los archivos de todo el directorio actual(Descargas).

$ egrep -r «sample» *

Los resultados contienen todas las líneas, junto con los nombres de los archivos, que contienen la palabra «sample» de todos los archivos del directorio Downloads, y sus subdirectorios.

Ejemplo 4: Realización de una búsqueda sin distinción de mayúsculas y minúsculas

Con la bandera -i, puede utilizar el comando egrep para imprimir los resultados basados en una cadena de búsqueda sin tener que preocuparse por sus mayúsculas y minúsculas.

Sintaxis:

$ egrep -i «cadena_de_búsqueda» nombre_archivo

Ejemplo:

Aquí estoy buscando la palabra «debian» y quiero que los resultados muestren todas las líneas del archivo que contengan la palabra «debian» o «Debian, independientemente de sus mayúsculas.

$ egrep -i «cadena_de_búsqueda» nombre_del_archivo

Puedes ver cómo la bandera -i me ayudó a obtener todas las líneas que contienen la cadena de búsqueda a través de una búsqueda insensible a mayúsculas y minúsculas.

Ejemplo 5: Buscar una cadena como una palabra completa y no como una subcadena

Cuando se busca normalmente una cadena a través de egrep, éste imprime todas las palabras que contienen la cadena como una subcadena. Por ejemplo, al buscar la cadena «on» se imprimirán todas las palabras que contengan la cadena «on» como » on», «only», «monitor», «clone», etc. Si desea que los resultados muestren sólo la palabra «on» como una palabra completa y no como una subcadena, puede utilizar la bandera -w con egrep.

Sintaxis:

$ egrep -w «cadena_de_búsqueda» nombre_archivo

Ejemplo:

Aquí estoy buscando la cadena «on» en un archivo de ejemplo:

$ egrep -i «on» archivo_de_muestra.txt

Puedes ver en la salida anterior, que también contiene la palabra «only». Sin embargo, esto no es lo que quiero, ya que estoy buscando exclusivamente la palabra «on». Así que este es el comando que utilizaré en su lugar:

$ egrep -iw «on» samplefile.txt

Ahora mis resultados de búsqueda sólo incluyen las líneas que contienen la palabra «on» como palabra completa.

Ejemplo 6: Imprimir sólo los nombres de archivo que contienen la cadena

A veces sólo queremos obtener los nombres de archivo que contienen una cadena específica, en lugar de imprimir las líneas que la contienen. Esto se puede hacer usando la bandera -l (L minúscula) con el comando egrep.

Sintaxis:

$ egrep -l «buscar_cadena» filename_pattern

Ejemplo:

Aquí estoy buscando la cadena «muestra» en todos los archivos .txt del directorio actual:

$ egrep -l muestra *.txt

Los resultados de la búsqueda sólo imprimen el nombre de los archivos que contienen la cadena especificada.

Ejemplo 7: Impresión de sólo la cadena de búsqueda de un archivo

En lugar de imprimir toda la línea que contiene la cadena de búsqueda, puede utilizar el comando egrep para imprimir la cadena en sí. La cadena se imprimirá el número de veces que aparezca en el archivo especificado.

Sintaxis:

$ egrep -o «cadena_de_búsqueda» nombre_archivo

Ejemplo:

En este ejemplo, estoy buscando la palabra «Esto» en mi archivo.

$ egrep -o Este archivo_de_muestra_.txt

Nota: Este uso del comando resulta útil cuando se busca una cadena basada en un patrón de expresión regular. Explicaremos las expresiones regulares en detalle en uno de los próximos ejemplos.

Ejemplo 8: Mostrar n número de líneas antes, después o alrededor de la cadena de búsqueda

A veces es muy importante conocer el contexto en un archivo donde se utiliza una cadena específica. El egrep viene bien en el sentido de que se puede utilizar para mostrar la línea que contiene la cadena de búsqueda y también un número específico de líneas antes, después y alrededor de ella.

Este es el archivo de texto de ejemplo que utilizaré para explicar los próximos ejemplos:

N número de líneas Después de la cadena de búsqueda:

Usando la bandera A de la siguiente manera se mostrará la línea que contiene la cadena de búsqueda y N número de líneas después de ella:

$ egrep -A <N> «cadena_de_búsqueda» nombre_archivo

Ejemplo:

$ egrep -A 2 «muestra» archivo_de_muestra.txt

N número de líneas Antes de la cadena de búsqueda:

Usando la bandera B de la siguiente manera se mostrará la línea que contiene la cadena de búsqueda y N número de líneas antes de ella:

$ egrep -B <N> «cadena_de_búsqueda» nombre_archivo

Ejemplo:

$ egrep -B 2 «muestra» archivo_de_búsqueda.txt

N número de líneas Antes de la cadena de búsqueda:

Usando la bandera C de la siguiente manera se mostrará la línea que contiene la cadena de búsqueda, y N número de líneas antes y después de ella:

$ egrep -C <N> «cadena_de_búsqueda» nombre_de_archivo

Ejemplo:

$ egrep -C 2 «muestra» archivo_de_muestra.txt

Ejemplo 9: Coincidencia de expresiones regulares en archivos

El comando egrep se vuelve más potente al buscar expresiones regulares en lugar de cadenas de búsqueda sólidas en un archivo.

Sintaxis:

$ egrep «ExpresionesRegulares» nombrearchivo

Expliquemos cómo puede utilizar las Expresiones Regulares en su búsqueda egrep:

Operador de repetición ¿Usa
? El elemento anterior a ? es opcional y se empareja como máximo una vez
* El elemento precedente antes de * se emparejará cero o más veces
+ El elemento precedente antes de + coincidirá una o más veces
{n} El elemento precedente coincidirá exactamente n veces.
{n,} El elemento anterior coincide n o más veces
{,m} El elemento anterior coincide un máximo de m veces
{n,m} El elemento precedente se empareja al menos n veces pero no más de m veces

Ejemplo:

En el siguiente ejemplo, las líneas que contienen la siguiente expresión se emparejan:

empezando por «Gnome» y terminando en » programas»

Ejemplo 10: Resaltar la cadena de búsqueda

Cuando se establece la variable de entorno GREP_OPTIONS como se indica a continuación, se obtiene la salida con la cadena/patrón de búsqueda resaltada en los resultados:

$ sudo export GREP_OPTIONS=’–color=auto’ GREP_COLOR=’100;8′

A continuación, puede buscar la cadena de cualquier manera que hemos descrito en los ejemplos de este artículo.

Ejemplo 11: Realizar una búsqueda invertida en un fichero

Con la búsqueda invertida, queremos decir que el comando egrep imprime todo lo que hay en el fichero, excepto las líneas que contienen la cadena de búsqueda. Utilizaremos el siguiente fichero de ejemplo para explicar la búsqueda invertida mediante egrep. Hemos impreso el contenido del fichero utilizando el comando cat:

Sintaxis:

$ egrep -v «cadena_de_búsqueda» nombre_archivo

Ejemplo:

Del archivo de ejemplo que mencionamos, queremos omitir la línea que contiene la palabra «dos» en la salida, por lo que utilizaremos el siguiente comando:

$ egrep -v «dos» archivo_de_muestra_.txt

Puede ver cómo la salida contiene todo lo del fichero de muestra excepto la segunda línea que contenía la cadena de búsqueda «dos».

Ejemplo 12: Realizar una búsqueda invertida basada en múltiples criterios/patrón de búsqueda

Con la bandera -v, también puede hacer que el comando egrep realice una búsqueda invertida basada en más de una cadena/patrón de búsqueda.

Utilizaremos el mismo archivo de ejemplo que mencionamos en el ejemplo 11 para explicar este escenario.

Sintaxis:

$ egrep -v -e «cadena_debúsqueda»/»patrón» -e «cadena_debúsqueda»/»patrón»
…. filename

Ejemplo:

Del archivo de muestra que hemos mencionado, queremos omitir la(s) línea(s) que contiene(n) las palabras «uno» y «dos» en la salida, por lo que utilizaremos el siguiente comando:

$ egrep -v -e «uno» -e «dos» samplefile_.txt

Hemos proporcionado dos palabras para omitirlas utilizando la bandera -e, por lo tanto la salida aparecerá de la siguiente manera:

Ejemplo 13: Impresión del número de líneas que coinciden con la cadena de búsqueda

En lugar de imprimir la cadena buscada del archivo o las líneas que la contienen, puede utilizar el comando egrep para contar e imprimir el número de líneas que coinciden con la cadena. Este conteo puede ser obtenido usando la bandera -c con el comando egrep.

Sintaxis:

$ egrep -c «cadena_de_búsqueda» nombre_de_archivo

Ejemplo:

En este ejemplo, usaremos la bandera -c para contar el número de líneas que contienen la palabra «Esto» en nuestro archivo de muestra:

$ egrep -c «Esto» nombre de archivo

También puede utilizar la función de búsqueda inversa aquí para contar e imprimir el número de líneas que no contienen la cadena de búsqueda:

$ grep -v -c «cadena_de_búsqueda» nombre_de_archivo

Ejemplo 14: Visualización del número de línea donde se encuentra la cadena

Con la bandera -n, puede hacer que el comando egrep imprima la línea coincidente junto con el número de línea que contiene la cadena de búsqueda.

Sintaxis:

$ grep -n «cadena_de_búsqueda» nombre_de_archivo

Ejemplo:

$ grep -n «Este» archivo_de_muestra_.txt

Puedes ver cómo se muestran los números de línea frente a los resultados de la búsqueda.

Ejemplo 15: Visualización de la posición en el fichero donde coincide la cadena de búsqueda

Si quieres saber la posición en el fichero donde existe la cadena de búsqueda, puedes utilizar la bandera -b con el comando egrep.

$ grep -o -b «cadena_de_búsqueda» nombre_de_archivo

Ejemplo:

$ grep -o -b «Este» archivo_de_muestra_.txt

Los resultados de la búsqueda imprimen el desplazamiento de bytes del archivo donde existe la palabra buscada.Este fue un uso detallado del comando egrep. Utilizando una combinación de las banderas explicadas en este artículo, puede realizar búsquedas más significativas y complejas en sus archivos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.