Búsqueda de sitios web

20 ejemplos útiles del comando egrep en Linux


Breve: En esta guía, analizaremos algunos de los ejemplos prácticos del comando egrep. Después de seguir esta guía, los usuarios podrán realizar búsquedas de texto de manera más eficiente en Linux.

¿Alguna vez se ha sentido frustrado porque no puede encontrar la información requerida en los registros? Extraer la información necesaria de un gran conjunto de datos es una tarea compleja y que requiere mucho tiempo.

Las cosas se vuelven realmente desafiantes si el sistema operativo no proporciona las herramientas adecuadas y aquí viene Linux a rescatarlo. Linux proporciona varias utilidades de filtrado de texto como awk, sed, cut, etc.

Sin embargo, egrep es una de las utilidades más poderosas y comúnmente utilizadas para el procesamiento de texto en Linux, y discutiremos algunos ejemplos del comando egrep.

El comando egrep en Linux es reconocido por la familia del comando grep, que se utiliza para buscar y hacer coincidir un patrón particular en archivos. Funciona de manera similar a grep -E (grep expresión regular extendida), pero principalmente busca un archivo en particular o incluso líneas para alinear o imprime la línea en el archivo dado.

La sintaxis del comando egrep es la siguiente:

egrep [OPTIONS] PATTERNS [FILES]

Creemos un archivo de texto de muestra con el siguiente contenido para usar un ejemplo:

cat sample.txt

Aquí podemos ver que el archivo de texto está listo. Ahora analicemos algunos ejemplos comunes que se pueden utilizar a diario.

1. Cómo encontrar un patrón en un solo archivo

Comencemos con un ejemplo simple de coincidencia de patrones, donde podemos usar el siguiente comando para buscar una cadena professional en un archivo sample.txt:

egrep professionals sample.txt

Aquí podemos ver que el comando imprime la línea que contiene el patrón especificado.

2. Cómo resaltar patrones coincidentes en un archivo

Podemos hacer que el resultado sea más informativo resaltando el patrón coincidente. Para lograr esto, podemos usar la opción --color del comando egrep. Por ejemplo, el siguiente comando resaltará el texto professionals en color rojo:

egrep --color=auto professionals sample.txt

Aquí, podemos ver que el mismo resultado es más informativo en comparación con el anterior. Además, podemos identificar fácilmente que la palabra profesionales se repite dos veces.

En la mayoría de los sistemas Linux, la configuración anterior está habilitada de forma predeterminada utilizando el siguiente alias:

alias egrep='egrep –color=auto'

3. Cómo encontrar un patrón en varios archivos

El comando egrep acepta múltiples archivos como argumento, lo que nos permite buscar un patrón particular en múltiples archivos. Entendamos esto con un ejemplo.

Primero, cree una copia del archivo sample.txt:

cp sample.txt sample-copy.txt

Ahora, busca el patrón professionals en ambos archivos:

egrep professionals sample.txt sample-copy.txt 

En el ejemplo anterior, podemos ver el nombre del archivo en la salida, que representa la línea coincidente de ese archivo.

4. Cómo contar líneas coincidentes en un archivo

A veces sólo necesitamos averiguar si el patrón está presente en el archivo. En caso afirmativo, ¿en cuántas líneas está presente? En tales casos, podemos usar la opción -c del comando.

Por ejemplo, el siguiente comando mostrará 1 como resultado porque la palabra professionals está presente en una sola línea.

egrep -c professionals sample.txt

1

5. Cómo imprimir sólo líneas coincidentes en un archivo

En el ejemplo anterior, vimos que la opción -c no cuenta el número de apariciones del patrón. Por ejemplo, la palabra professionals aparece dos veces en la misma línea pero la opción -c la trata como una sola coincidencia.

En tales casos, podemos usar la opción -o del comando para imprimir solo el patrón coincidente. Por ejemplo, el siguiente comando mostrará la palabra professionals en dos líneas separadas:

egrep -o professionals sample.txt

Ahora, contemos las líneas usando el comando wc:

egrep -o professionals sample.txt | wc -l

En el ejemplo anterior, hemos utilizado la combinación de los comandos egrep y wc para contar el número de apariciones del patrón particular.

6. Cómo encontrar un patrón ignorando casos

De forma predeterminada, egrep realiza la coincidencia de patrones distinguiendo entre mayúsculas y minúsculas. Significa palabras: nosotros, Nosotros, nosotros y NOSOTROS somos tratados como palabras diferentes. Sin embargo, podemos imponer la búsqueda que no distingue entre mayúsculas y minúsculas utilizando la opción -i.

Por ejemplo, en el siguiente comando, la coincidencia del patrón se realizará correctamente para el texto nosotros y Nosotros:

egrep -i we sample.txt 

7. Cómo excluir patrones parcialmente coincidentes

En el ejemplo anterior, vimos que el comando egrep realiza una coincidencia parcial. Por ejemplo, cuando buscamos el texto we, la coincidencia de patrones también tuvo éxito para otros textos. Como web, sitio web y fueron.

Para superar esta limitación, podemos utilizar la opción -w, que impone la coincidencia de palabras completas.

egrep -w we sample.txt

8. Cómo invertir la coincidencia de patrones en un archivo

Hasta ahora, utilizamos el comando egrep para imprimir las líneas en las que está presente el patrón dado. Sin embargo, en ocasiones queremos realizar la operación de forma contraria.

Por ejemplo, es posible que queramos imprimir las líneas en las que el patrón dado no está presente. Podemos lograr esto con la ayuda de la opción -v:

egrep -v we sample.txt

Aquí podemos ver que el comando imprime todas las líneas que no contienen el texto we.

9. Cómo encontrar el número de línea del patrón

Podemos usar la opción -n del comando para habilitar la numeración de líneas, que muestra el número de línea en la salida cuando la coincidencia de patrones se realiza correctamente. Este sencillo truco hace que el resultado sea más significativo.

egrep -n professionals sample.txt

En el resultado anterior, podemos ver que la palabra professionals está presente en la quinta línea.

10. Cómo realizar una coincidencia de patrones en modo silencioso

En modo silencioso, el comando egrep no imprime el patrón coincidente. Por lo tanto, tenemos que usar el valor de retorno del comando para identificar si la coincidencia de patrones se realizó correctamente o no.

Podemos usar la opción -q del comando para habilitar el modo silencioso, lo cual resulta útil al escribir scripts de shell.

egrep -q professionals sample.txt
egrep -q non-existing-pattern sample.txt

En este ejemplo, el valor de retorno cero indica la presencia del patrón, mientras que el valor distinto de cero indica la ausencia del patrón.

11. Cómo mostrar líneas antes de que coincida el patrón

A veces tiene sentido mostrar algunas líneas alrededor del patrón coincidente. Para tales escenarios, podemos usar la opción -B del comando, que muestra N líneas antes del patrón coincidente.

Por ejemplo, el siguiente comando imprimirá la línea para la cual la coincidencia del patrón se realizó correctamente, así como las 2 líneas anteriores.

egrep -B 2 -n professionals sample.txt 

En este ejemplo, hemos utilizado la opción -n para mostrar los números de línea.

12. Cómo mostrar líneas después de la coincidencia del patrón

De manera similar, podemos usar la opción -A del comando para mostrar líneas después de la coincidencia del patrón. Por ejemplo, el siguiente comando imprimirá la línea para la cual la coincidencia del patrón se realizó correctamente, así como las 2 líneas siguientes.

egrep -A 2 -n professionals sample.txt

13. Cómo mostrar líneas alrededor de la coincidencia del patrón

Además de esto, el comando egrep admite la opción -C que combina la funcionalidad de las opciones -A y -B, que muestra las líneas antes y después del patrón coincidente.

egrep -C 2 -n professionals sample.txt 

14. Cómo encontrar un patrón en varios archivos de forma recursiva

Como se mencionó anteriormente, podemos realizar coincidencias de patrones en varios archivos. Sin embargo, la situación se vuelve complicada cuando los archivos están presentes en varios subdirectorios y los pasamos todos como argumentos de comando.

En tales casos, podemos realizar la coincidencia de patrones de forma recursiva usando la opción -r como se muestra en el siguiente ejemplo.

Primero, cree 2 subdirectorios y copie el archivo sample.txt en ellos:

mkdir -p dir1/dir2
cp sample.txt dir1/
cp sample.txt dir1/dir2/

Ahora, realicemos la operación de búsqueda de forma recursiva:

egrep -r professionals dir1

En el ejemplo anterior, podemos ver que la coincidencia de patrón se realizó correctamente para los archivos dir1/dir2/sample.txt y dir1/sample.txt.

15. Cómo hacer coincidir un solo carácter usando expresiones regulares

Podemos usar un carácter de punto (.) para hacer coincidir cualquier carácter excepto el final de la línea. Por ejemplo, la siguiente expresión regular coincide con el texto har, hat y has:

egrep "ha." sample.txt

16. Cómo hacer coincidir cero o más apariciones de personajes

Podemos usar el asterisco (*) para hacer coincidir cero o más apariciones del carácter anterior. Por ejemplo, la siguiente expresión regular coincide con texto que contiene una cadena we seguida de cero o más apariciones del carácter b.

egrep "web*" sample.txt

17. Cómo hacer coincidir una o más apariciones del personaje anterior

Podemos usar el signo más (+) para hacer coincidir una o más apariciones del carácter anterior. Por ejemplo, la siguiente expresión regular coincide con el texto que contiene la cadena we seguida de al menos una aparición del carácter b.

egrep "web+" sample.txt

Aquí podemos ver que la coincidencia de patrones no tiene éxito para las palabras: we y were, debido a la ausencia del carácter b.

18. Cómo hacer coincidir el inicio de la línea

Podemos usar el símbolo de intercalación (^) para representar el inicio de la línea. Por ejemplo, la siguiente expresión regular imprime las líneas que comienzan con el texto Nosotros:

egrep "^We" sample.txt

19. Cómo hacer coincidir el final de la línea

Podemos usar el dólar ($) para representar el final de la línea. Por ejemplo, la siguiente expresión regular imprime las líneas que terminan con el texto e.:

egrep "e.$" sample.txt

20. Cómo eliminar líneas vacías en un archivo

Podemos usar el símbolo de intercalación (^) seguido inmediatamente por el dólar ($) para representar la línea vacía. Usemos esto en una expresión regular para eliminar líneas vacías:

egrep -n -v "^$" sample.txt

En el resultado anterior, podemos ver que los números de línea 2, 4, 6, 8 y 10 no se muestran porque están vacíos.

Conclusión

En este artículo, analizamos algunos ejemplos útiles de los comandos egrep. Se pueden utilizar estos ejemplos en la vida cotidiana para mejorar la productividad.

¿Conoce algún otro mejor ejemplo del comando egrep en Linux? Háganos saber su opinión en los comentarios a continuación.