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
- Ejemplo 2: Buscar una cadena específica en múltiples archivos
- Ejemplo 3: Buscar recursivamente la cadena en todo el directorio
- Ejemplo 4: Realización de una búsqueda sin distinción de mayúsculas y minúsculas
- Ejemplo 5: Buscar una cadena como una palabra completa y no como una subcadena
- Ejemplo 6: Imprimir sólo los nombres de archivo que contienen la cadena
- Ejemplo 7: Impresión de sólo la cadena de búsqueda de un archivo
- Ejemplo 8: Mostrar n número de líneas antes, después o alrededor de la cadena de búsqueda
- Ejemplo 9: Coincidencia de expresiones regulares en archivos
- Ejemplo 10: Resaltar la cadena de búsqueda
- Ejemplo 11: Realizar una búsqueda invertida en un fichero
- Ejemplo 12: Realizar una búsqueda invertida basada en múltiples criterios/patrón de búsqueda
- Ejemplo 13: Impresión del número de líneas que coinciden con la cadena de búsqueda
- Ejemplo 14: Visualización del número de línea donde se encuentra la cadena
- Ejemplo 15: Visualización de la posición en el fichero donde coincide la cadena de búsqueda
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:
Ejemplo:
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:
Ejemplo:
Aquí, buscaremos la palabra «debian» en todos los archivos .txt especificando el patrón de nombre de archivo de la siguiente manera:
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:
Ejemplo:
En este ejemplo, estoy buscando la palabra «muestra» en los archivos de todo el directorio actual(Descargas).
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:
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.
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:
Ejemplo:
Aquí estoy buscando la cadena «on» en un archivo de ejemplo:
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:
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:
Ejemplo:
Aquí estoy buscando la cadena «muestra» en todos los archivos .txt del directorio actual:
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:
Ejemplo:
En este ejemplo, estoy buscando la palabra «Esto» en mi archivo.
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:
Ejemplo:
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:
Ejemplo:
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:
Ejemplo:
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:
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:
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:
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:
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:
…. 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:
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:
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:
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:
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:
Ejemplo:
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.
Ejemplo:
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.