Estaciones de trabajo en línea OnWorks Linux y Windows

Logotipo

Alojamiento gratuito en línea para estaciones de trabajo

<Anterior | Contenido | Siguiente>

Alternancia

La primera de las características extendidas de las expresiones regulares que discutiremos se llama alternancia, que es la función que permite que se produzca una coincidencia entre un conjunto de expresiones. Así como una expresión entre corchetes permite que un solo carácter coincida con un conjunto de caracteres especificados, la alternancia permite coincidencias con un conjunto de cadenas u otras expresiones regulares.

Para demostrar, usaremos grep junto con echo. Primero, intentemos una simple coincidencia de cadena antigua:



[yo @ linuxbox ~] $ echo "AAA" | grep AAA

AAA

[yo @ linuxbox ~] $ echo "BBB" | grep AAA

[yo @ linuxbox ~] $

[yo @ linuxbox ~] $ echo "AAA" | grep AAA

AAA

[yo @ linuxbox ~] $ echo "BBB" | grep AAA

[yo @ linuxbox ~] $


Un ejemplo bastante sencillo, en el que canalizamos la salida de echo into grep y ver los resultados. Cuando ocurre una coincidencia, la vemos impresa; cuando no se produce ninguna coincidencia, no vemos resultados.

Ahora agregaremos alternancia, representada por el metacarácter de barra vertical:



[yo @ linuxbox ~] $ echo "AAA" | grep -E 'AAA | BBB'

AAA

[yo @ linuxbox ~] $ echo "BBB" | grep -E 'AAA | BBB'

BBB

[yo @ linuxbox ~] $ echo "CCC" | grep -E 'AAA | BBB'

[yo @ linuxbox ~] $

[yo @ linuxbox ~] $ echo "AAA" | grep -E 'AAA | BBB'

AAA

[yo @ linuxbox ~] $ echo "BBB" | grep -E 'AAA | BBB'

BBB

[yo @ linuxbox ~] $ echo "CCC" | grep -E 'AAA | BBB'

[yo @ linuxbox ~] $


Aquí vemos la expresión regular 'AAA | BBB', que significa "coincidir con la cadena AAA o la cuerda BBB. " Tenga en cuenta que, dado que se trata de una función ampliada, agregamos la -E opción de grep (aunque podríamos haber usado el egrep programa en su lugar), y encerramos la expresión regular entre comillas para evitar que el shell interprete el metacarácter de barra vertical como un operador de tubería. La alternancia no se limita a dos opciones:



[yo @ linuxbox ~] $ echo "AAA" | grep -E 'AAA | BBB | CCC'

AAA

[yo @ linuxbox ~] $ echo "AAA" | grep -E 'AAA | BBB | CCC'

AAA


Para combinar la alternancia con otros elementos de expresión regular, podemos usar () para separar la alternancia:



[yo @ linuxbox ~] $ grep -Eh '^ (bz | gz | zip)' dirlist * .txt

[yo @ linuxbox ~] $ grep -Eh '^ (bz | gz | zip)' dirlist * .txt


Esta expresión coincidirá con los nombres de archivo en nuestras listas que comienzan con "bz", "gz" o "zip". Si hubiéramos dejado los paréntesis, el significado de esta expresión regular:



[yo @ linuxbox ~] $ grep -Eh '^ bz | gz | zip' dirlist * .txt

[yo @ linuxbox ~] $ grep -Eh '^ bz | gz | zip' dirlist * .txt


cambios para que coincida con cualquier nombre de archivo que comience con "bz" o contiene "Gz" o contiene "Código Postal".


Top OS Cloud Computing en OnWorks: