0Pricing
DevOps Bootcamp · Lección

Combinación de Regex con sed/awk

Integre expresiones regulares en comandos «sed» y «awk» para filtrar, sustituir y extraer datos de texto de forma avanzada.

Combinación de Regex con sed/awk es una lección gratuita de DevOps Bootcamp en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de DevOps Bootcamp, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de DevOps Bootcamp incluye 4 lecciones en total.

Expresiones regulares con sed y awk

¡Le damos la bienvenida a la lección final sobre expresiones regulares! Hemos aprendido el poder de las expresiones regulares para hacer coincidir patrones.

Ahora combinaremos ese poder con dos herramientas esenciales de Linux: sed (editor de flujo) y awk (lenguaje de exploración y procesamiento de patrones). Esta integración permite realizar filtrado, sustitución y extracción de datos de texto muy avanzados.

sed: filtrar con expresiones regulares

sed puede usar expresiones regulares para filtrar líneas. La dirección /pattern/ permite que sed aplique comandos únicamente a las líneas que coincidan con la expresión regular indicada.

La opción -n suprime la salida predeterminada y p imprime explícitamente las líneas coincidentes.

echo -e "apple
banana
orange" | sed -n '/an/p'

sed: sustituir con expresiones regulares

El comando s/regex/replacement/ de sed es donde las expresiones regulares realmente destacan para transformar texto. Puede reemplazar los patrones encontrados por su expresión regular con texto nuevo.

La bandera g reemplaza todas las apariciones de una línea, y i hace que la coincidencia no distinga entre mayúsculas y minúsculas.

echo "Hello world, hello universe" | sed 's/hello/hi/gi'

sed: grupos de captura y referencias inversas

Las expresiones regulares permiten definir grupos de captura mediante paréntesis (). Después, puede hacer referencia al texto coincidente con estos grupos en la cadena de reemplazo mediante referencias inversas como \1, \2, etc.

Use -E con sed para utilizar la sintaxis de expresiones regulares extendidas (por ejemplo, para usar () sin escaparlos).

echo "Doe, John" | sed -E 's/([A-Za-z]+), ([A-Za-z]+)/\2 \1/'

awk: filtrar registros con expresiones regulares

awk usa patrones de expresiones regulares para seleccionar registros (líneas) antes de ejecutar acciones. Si se proporciona un patrón antes de un bloque de acción {...}, la acción solo se ejecuta en las líneas que coincidan con el patrón.

Es similar a grep, pero permite realizar un procesamiento más complejo.

echo -e "Line 1: apple
Line 2: banana
Line 3: orange" | awk '/banana/'

awk: expresiones regulares en campos específicos

Puede aplicar patrones de expresiones regulares a campos específicos en awk mediante los operadores ~ (coincide) y !~ (no coincide). Esto resulta muy potente para datos estructurados.

Por ejemplo, $1 ~ /pattern/ comprueba si el primer campo coincide con la expresión regular.

echo "Name: John, Age: 30
Name: Jane, Age: 25" | awk '$1 ~ /Name/ {print $2}'

awk: extraer coincidencias (match, substr)

awk proporciona funciones como match(string, regex) para encontrar la posición y la longitud de una coincidencia, y substr(string, start, length) para extraerla.

Después de match(), RSTART contiene la posición inicial y RLENGTH contiene la longitud de la coincidencia.

echo "ItemCode: ABC123 Price: 45.67" | awk '{match($0, /[0-9]+\.[0-9]+/); print substr($0, RSTART, RLENGTH)}'

awk: sustitución en el lugar (sub, gsub)

awk también incluye funciones integradas para la sustitución: sub(regex, replacement, target) para la primera coincidencia y gsub(regex, replacement, target) para todas las coincidencias.

Si se omite target, se usa $0 (el registro completo). Puede especificar un campo como $1.

echo "apple,banana,orange" | awk '{gsub(/a/, "X", $0); print}'

Elegir entre sed y awk

Aunque tanto sed como awk pueden usar expresiones regulares para sustituir y filtrar, cada uno destaca en áreas diferentes:

  • sed suele ser mejor para transformaciones y sustituciones sencillas línea por línea. Es un editor de flujo.
  • awk es más potente para procesar datos estructurados (campos), realizar cálculos y gestionar lógica más compleja o patrones de varias líneas. Es un lenguaje de programación por sí mismo.

A menudo, puede encadenarlos mediante tuberías | para realizar tareas muy complejas.

Desafío: extraer y transformar

Considere la siguiente línea de texto:

Order#12345: ProductX - Price $19.99

¿Qué comando extraería correctamente el precio (por ejemplo, «19.99») y después cambiaría el símbolo de moneda por «EUR»?

Repaso: expresiones regulares con sed y awk

¡Ha dominado la combinación de expresiones regulares con sed y awk!

  • sed destaca al filtrar y reemplazar texto línea por línea, usando expresiones regulares para realizar coincidencias y sustituciones potentes.
  • awk ofrece un enfoque más programático, ya que permite usar expresiones regulares para filtrar registros, buscar coincidencias en campos específicos y extraer o modificar datos mediante funciones como match(), substr(), sub() y gsub().

Esta habilidad es fundamental para el procesamiento avanzado de texto y la creación de scripts en Linux.

Preguntas frecuentes

¿La lección «Combinación de Regex con sed/awk» es gratis?

Sí — el texto completo de «Combinación de Regex con sed/awk» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de DevOps Bootcamp, actualiza a CoddyKit PRO. El curso de DevOps Bootcamp incluye 4 lecciones en total.

¿Qué aprenderé en «Combinación de Regex con sed/awk»?

Integre expresiones regulares en comandos «sed» y «awk» para filtrar, sustituir y extraer datos de texto de forma avanzada. Practicas DevOps Bootcamp con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar DevOps Bootcamp?

No se requiere experiencia previa. DevOps Bootcamp en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Combinación de Regex con sed/awk»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de DevOps Bootcamp?

Sí. Cada lección de DevOps Bootcamp incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Introducción a las expresiones regulares (Regex)
  2. Grep avanzado con Regex
  3. Combinación de Regex con sed/awk
  4. Grupos de captura, referencias inversas y sustitución
← Volver a DevOps Bootcamp