La variable BASH_REMATCH es una característica poderosa en los scripts de Bash que se utiliza para trabajar con expresiones regulares. Cuando se realiza una operación de coincidencia usando el comando [[ ... =~ ... ]]
, los resultados de la coincidencia se almacenan en esta variable.
¿Cómo Funciona?
- BASH_REMATCH[0]: Contiene la coincidencia completa del patrón.
- BASH_REMATCH[n]: Contiene las coincidencias de los grupos capturados, donde n es el número del grupo.
Sintaxis
1 2 3 4 5 6 |
if [[ $cadena =~ $patrón ]]; then # Acceso a las coincidencias echo "Coincidencia completa: ${BASH_REMATCH[0]}" echo "Grupo 1: ${BASH_REMATCH[1]}" # Otros grupos... fi |
Ejemplos Avanzados
Ejemplo 1: Extracción de Datos de una Fecha
Este ejemplo muestra cómo extraer el día, el mes y el año de una fecha en formato DD/MM/AAAA
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/bin/bash fecha="25/12/2023" if [[ $fecha =~ ([0-9]{2})/([0-9]{2})/([0-9]{4}) ]]; then dia=${BASH_REMATCH[1]} mes=${BASH_REMATCH[2]} anio=${BASH_REMATCH[3]} echo "Día: $dia" echo "Mes: $mes" echo "Año: $anio" else echo "Formato de fecha no válido." fi |
Ejemplo 2: Validación de una Dirección de Correo Electrónico
En este ejemplo, se valida una dirección de correo electrónico y se extraen el nombre de usuario y el dominio.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/bin/bash correo="usuario@ejemplo.com" if [[ $correo =~ ^([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+)\.([a-zA-Z]{2,})$ ]]; then usuario=${BASH_REMATCH[1]} dominio=${BASH_REMATCH[2]} extension=${BASH_REMATCH[3]} echo "Usuario: $usuario" echo "Dominio: $dominio" echo "Extensión: $extension" else echo "Dirección de correo no válida." fi |
Ejemplo 3: Análisis de una URL
Este script analiza una URL y extrae el protocolo, el dominio y la ruta.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/bin/bash url="https://www.ejemplo.com/ruta/a/recurso" if [[ $url =~ ^(https?)://([a-zA-Z0-9.-]+)/?(.*)$ ]]; then protocolo=${BASH_REMATCH[1]} dominio=${BASH_REMATCH[2]} ruta=${BASH_REMATCH[3]} echo "Protocolo: $protocolo" echo "Dominio: $dominio" echo "Ruta: $ruta" else echo "URL no válida." fi |
Conclusión
La variable BASH_REMATCH es una herramienta invaluable para el procesamiento de texto en scripts Bash. Permite extraer y manipular datos de manera eficiente utilizando expresiones regulares, lo que facilita la validación y el análisis de cadenas compleja