Sobre las expresiones regulares en egrep.

Escrito por Zeph Grunschlag

egrep es un acrónimo de «Extended Global Regular Expressions Print». Es un programa que escanea un archivo especificado línea por línea, devolviendo las líneas que contienen un patrón que coincide con una expresión regular dada.

El comando egrep estándar tiene el siguiente aspecto:

egrep<flags> ‘<expresión regular>’ <nombre de archivo>

Algunas banderas comunes son: -c para contar el número de coincidencias exitosas y no imprimir las coincidencias reales, -i para que la búsqueda no distinga entre mayúsculas y minúsculas, -n para imprimir el número de línea antes de la impresión de cada coincidencia, -v para tomar el complemento de la expresión regular (es decir, devolver las líneas que no coinciden), y -l para imprimir los nombres de los archivos con líneas que coinciden con la expresión.

Las expresiones regulares vienen en su propia variante de egrep (esto es muy similar a las expresiones regulares que se encuentran en emacs, perl, etc.)

(La letra griega ε (épsilon) representa la cadena vacía)

Una de las principales diferencias entre las expresiones regulares egrep y las expresiones regulares teóricas es que en egrep se permite que las coincidencias se produzcan en cualquier parte de la cadena, mientras que en el uso teórico, las coincidencias siempre comienzan desde el primer carácter de la cadena y terminan en el último. Por ejemplo, considere la cadena 000001000. En egrep, la expresión regular 010 da una coincidencia; en cambio, la expresión regular teórica 010 no coincide con 000001000 porque 010 y 000001000 no son iguales. El equivalente teórico del 010 de egrep es (0+1)*010(0+1)*. ¿Qué pasa si realmente quiere considerar el principio y el final de las cadenas? egrep le proporciona el símbolo de la carita ^ para especificar el principio, y el símbolo del dólar $ para el final. Así que el equivalente en egrep del teórico 010 viene dado por ^010$ .

Otro par de egrepsímbolos útiles son los límites de las palabras \< y\> que denotan respectivamente el comienzo y el final de una palabra.

Para especificar un conjunto o rango de caracteres utilice llaves. Para indicar el conjunto, utilice el símbolo del sombrero ^ como primer carácter. Por ejemplo

  • es el conjunto { a, 9, A, 0, 5 }
  • es el conjunto complementario ASCII – { a, 9, A, 0, 5 } (todo excepto a, 9, A, 0 y 5).
  • es el conjunto de todas las letras minúsculas { a, b, c, d, …, z }
  • es el conjunto de todas las letras ASCII excepto las minúsculas, los números entre 4 y 9, y las mayúsculas Q y R.

Algunos ejemplos:

  • egrep ‘^(0|1)+ +$’ searchfile.txt

comparar todas las líneas de searchfile.txt que comienzan con una cadena de bits no vacía, seguida de un espacio, seguida de una palabra alfabética no vacía que termina la línea

Deja una respuesta

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