Las expresiones regulares (regex) son una herramienta poderosa para buscar y manipular texto. En Bash, se utilizan comúnmente con comandos como grep, sed, y awk. Este tema cubrirá los conceptos básicos y avanzados de las expresiones regulares, proporcionando ejemplos prácticos y ejercicios para reforzar el aprendizaje.

Conceptos Básicos de Expresiones Regulares

¿Qué es una Expresión Regular?

Una expresión regular es una secuencia de caracteres que define un patrón de búsqueda. Este patrón puede ser utilizado para encontrar coincidencias dentro de cadenas de texto.

Sintaxis Básica

  1. Caracteres Literales: Coinciden exactamente con el carácter especificado.

    • Ejemplo: a coincide con "a" en "apple".
  2. Metacaracteres: Tienen significados especiales.

    • .: Coincide con cualquier carácter excepto una nueva línea.
    • ^: Coincide con el inicio de una línea.
    • $: Coincide con el final de una línea.
    • *: Coincide con cero o más repeticiones del carácter anterior.
    • +: Coincide con una o más repeticiones del carácter anterior.
    • ?: Coincide con cero o una repetición del carácter anterior.
    • []: Define un conjunto de caracteres.
    • |: Actúa como un operador OR.
    • () : Agrupa una parte de la expresión regular.

Ejemplos Prácticos

Uso de grep con Expresiones Regulares

# Buscar líneas que contienen "apple"
grep "apple" file.txt

# Buscar líneas que comienzan con "apple"
grep "^apple" file.txt

# Buscar líneas que terminan con "apple"
grep "apple$" file.txt

# Buscar líneas que contienen cualquier carácter seguido de "pple"
grep ".pple" file.txt

# Buscar líneas que contienen "a" seguido de cero o más "p"
grep "ap*" file.txt

# Buscar líneas que contienen "a" seguido de una o más "p"
grep "ap+" file.txt

# Buscar líneas que contienen "a" seguido de cero o una "p"
grep "ap?" file.txt

# Buscar líneas que contienen "a" o "b"
grep "a|b" file.txt

# Buscar líneas que contienen "a" seguido de "p" o "b"
grep "a(p|b)" file.txt

Ejercicio 1: Búsqueda Básica

Instrucción: Usa grep para encontrar todas las líneas en sample.txt que:

  1. Comiencen con "Error".
  2. Terminen con un número.
  3. Contengan una dirección de correo electrónico (formato simple: usuario@dominio).

Solución:

# 1. Comiencen con "Error"
grep "^Error" sample.txt

# 2. Terminen con un número
grep "[0-9]$" sample.txt

# 3. Contengan una dirección de correo electrónico
grep "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" sample.txt

Conceptos Avanzados de Expresiones Regulares

Grupos y Referencias

  1. Grupos: Se utilizan para agrupar partes de una expresión regular.

    • Ejemplo: (abc) coincide con "abc".
  2. Referencias: Se utilizan para referirse a grupos capturados.

    • Ejemplo: \1 se refiere al primer grupo capturado.

Ejemplos Prácticos

Uso de sed con Expresiones Regulares

# Reemplazar "apple" con "orange"
sed 's/apple/orange/g' file.txt

# Reemplazar cualquier dígito con "X"
sed 's/[0-9]/X/g' file.txt

# Reemplazar "foo" seguido de cualquier carácter con "bar"
sed 's/foo./bar/g' file.txt

# Reemplazar "foo" seguido de uno o más caracteres con "bar"
sed 's/foo.*/bar/g' file.txt

# Reemplazar "foo" seguido de un dígito con "bar"
sed 's/foo[0-9]/bar/g' file.txt

# Reemplazar "foo" seguido de un grupo capturado con "bar" y el grupo capturado
sed 's/foo\(.\)/bar\1/g' file.txt

Ejercicio 2: Manipulación Avanzada

Instrucción: Usa sed para:

  1. Reemplazar todas las direcciones de correo electrónico en sample.txt con "[email protected]".
  2. Reemplazar todas las fechas en formato YYYY-MM-DD con "DATE".

Solución:

# 1. Reemplazar direcciones de correo electrónico
sed 's/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/[email protected]/g' sample.txt

# 2. Reemplazar fechas en formato YYYY-MM-DD
sed 's/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}/DATE/g' sample.txt

Resumen

En esta sección, hemos cubierto los conceptos básicos y avanzados de las expresiones regulares en Bash. Aprendimos a utilizar grep y sed para buscar y manipular texto utilizando patrones definidos por expresiones regulares. Practicamos con ejemplos y ejercicios para reforzar el aprendizaje.

Puntos Clave

  • Las expresiones regulares son herramientas poderosas para buscar y manipular texto.
  • grep y sed son comandos comunes en Bash que utilizan expresiones regulares.
  • Los metacaracteres y los grupos son componentes esenciales de las expresiones regulares.

Próximos Pasos

En el siguiente módulo, exploraremos cómo trabajar con herramientas externas como awk y sed en mayor profundidad, lo que nos permitirá realizar manipulaciones de texto aún más complejas y potentes.

© Copyright 2024. Todos los derechos reservados