Usando expresiones regulares

Bash:
Usando expresiones regulares

Cómo hacerlo:

Coincidencia de Patrones Básica

Para encontrar si una cadena coincide con un patrón, puedes usar grep, una utilidad de línea de comandos para buscar conjuntos de datos de texto plano por líneas que coincidan con una expresión regular:

echo "¡Hola, Mundo!" | grep -o "Mundo"
# Salida: Mundo

Extracción de Datos Específicos

Para extraer partes de datos que coinciden con tus patrones de regex, puedes usar -o con grep:

echo "Error: Archivo no encontrado" | grep -oE "[A-Za-z]+:"
# Salida: Error:

Usando Regex con sed

sed (editor de flujos) es una utilidad poderosa para analizar y transformar texto. Aquí te mostramos cómo usar sed con regex para reemplazar texto:

echo "Bash es genial" | sed -e 's/genial/asombroso/'
# Salida: Bash es asombroso

Coincidencia de Patrones en Declaraciones Condicionales

Bash también soporta regex directamente en declaraciones condicionales:

[[ "https://ejemplo.com" =~ ^https?:// ]] && echo "URL es válida" || echo "URL es inválida"
# Salida: URL es válida

Coincidencia y Manipulación de Patrones Avanzados con awk

awk es otra herramienta de procesamiento de texto que soporta extracción y manipulación de datos más complejas. Puede ser beneficioso cuando se trabaja con datos de texto estructurados, como CSVs:

echo -e "ID,Nombre,Edad\n1,Juan,22\n2,Juana,24" | awk -F, '$3 > 22 {print $2 " es mayor de 22."}'
# Salida: Juana es mayor de 22.

Aunque las funcionalidades de regex integradas en Bash cubren muchos casos de uso, para operaciones de regex muy avanzadas, podrías considerar usar una combinación de scripts de Bash con scripts de perl o python, ya que estos lenguajes ofrecen bibliotecas de regex poderosas (por ejemplo, re en Python). Un ejemplo simple con Python:

echo "Captura esto 123" | python3 -c "import sys; import re; print(re.search('(\d+)', sys.stdin.read()).group(0))"
# Salida: 123

Incorporar estos lenguajes de programación cuando sea necesario puede ayudarte a aprovechar todo el poder de regex en tus scripts de Bash.