Saltar a contenido

📚 Módulo 4: Dominando texto y datos

Duración estimada: según tu ritmo y experiencia.

Objetivo: Dominar el procesamiento de texto con grep, ediciones con sed, análisis con awk, y el uso de expresiones regulares, explorando su aplicación técnica. 🎯

Prerrequisitos: Haber completado los Módulos 1, 2 y 3, acceso a un sistema Linux, macOS o WSL con una terminal y un editor de texto (nano, vim o VS Code).

Nota: El tiempo varía según tu nivel y dedicación; practica cada comando con diferentes textos para dominarlo.


📖 Contenidos del Módulo

4.1. Buscando con grep: Encuentra lo que necesitas 📜

Teoría:

grep busca texto en archivos o salidas usando patrones. Opciones como -i (insensible a mayúsculas) o -r (recursivo) amplían su uso. Técnicamente, es una herramienta clave para filtrar datos.

Práctica:

  1. Crea un archivo de prueba:
    echo "Hola mundo\nLinux es genial" > texto.txt
    cat texto.txt
    
  2. Busca una palabra con grep:
    grep "mundo" texto.txt
    
    Observa la línea que contiene "mundo".
  3. Usa una opción con -i:
    grep -i "hola" texto.txt
    
    -i ignora mayúsculas/minúsculas.
  4. Busca recursivamente en directorios:
    mkdir datos
    echo "Dato 1" > datos/archivo1.txt
    grep -r "Dato" datos/
    
  5. Combina con pipe:
    ls -l | grep "txt"
    

Dato curioso

grep viene de "Global Regular Expression Print". 😄

4.2. Editando con sed: Transforma tu texto 🖌️

Teoría:

sed edita texto en flujos o archivos, usando comandos como s (sustituir). Ejemplo: s/palabra/nueva/g reemplaza globalmente. Técnicamente, es ideal para transformaciones automáticas.

Práctica:

  1. Sustituye texto en el archivo:
    sed 's/mundo/amigo/' texto.txt
    
    Muestra el cambio sin modificar el archivo.
  2. Guarda los cambios con -i:
    sed -i 's/amigo/mundo/' texto.txt
    cat texto.txt
    
    -i edita el archivo directamente.
  3. Añade una línea con -e:
    sed -e '2a Nueva línea' texto.txt
    
    Añade después de la línea 2.
  4. Crea un script con sed:
    nano cambia.sh
    #!/bin/bash
    sed 's/genial/fantástico/' texto.txt > nuevo.txt
    chmod +x cambia.sh
    ./cambia.sh
    cat nuevo.txt
    
  5. Prueba eliminación de líneas:
    sed '2d' texto.txt
    

Consejo

Usa sed -i.bak para hacer un respaldo antes de editar. 💡

4.3. Analizando con awk: Extrae y procesa ⚙️

Teoría:

awk procesa texto línea por línea, dividiendo en campos (por defecto, espacios). Usa {print $1} para el primer campo. Técnicamente, es potente para análisis de datos.

Práctica:

  1. Crea un archivo con datos:
    echo "Juan 25\nMaria 30" > personas.txt
    cat personas.txt
    
  2. Extrae el primer campo con awk:
    awk '{print $1}' personas.txt
    
    Muestra los nombres.
  3. Filtra por campo:
    awk '$2 > 25 {print $1}' personas.txt
    
    Muestra nombres con edad > 25.
  4. Crea un script con awk:
    nano analiza.sh
    #!/bin/bash
    awk '{sum += $2} END {print "Total:", sum}' personas.txt > total.txt
    chmod +x analiza.sh
    ./analiza.sh
    cat total.txt
    
  5. Combina con pipe:
    ls -l | awk '{print $9}'
    

Advertencia

awk usa espacios como separadores; ajusta con -F si usas otro (ej. -F:). 🛑

4.4. Expresiones regulares: Patrones poderosos 🛡️

Teoría:

Las expresiones regulares (regex) definen patrones para buscar o reemplazar. Ejemplo: ^[0-9] busca números al inicio. Técnicamente, potencian grep, sed y awk.

Práctica:

  1. Busca líneas con números:
    echo "123 texto\nabc" | grep "^[0-9]"
    
  2. Reemplaza con sed y regex:
    echo "123abc" | sed 's/[0-9]\+/NUM/'
    
    [0-9]\+ encuentra uno o más dígitos.
  3. Filtra con awk y regex:
    echo "a1 b2 c3" | awk '/[0-9]/ {print $0}'
    
  4. Crea un script con regex:
    nano regex.sh
    #!/bin/bash
    echo "dato123" | grep "[0-9]\+" > numeros.txt
    chmod +x regex.sh
    ./regex.sh
    cat numeros.txt
    
  5. Prueba un patrón complejo:
    echo "email@dominio.com" | grep "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
    

Consejo

Practica regex con herramientas como regex101.com para entender patrones. 💡

4.5. Combinando herramientas: Flujos completos 🚀

Teoría:

Combinar grep, sed, awk y pipes crea flujos de trabajo. Ejemplo: cat file | grep patrón | awk '{print $1}'. Técnicamente, esto optimiza el procesamiento de datos.

Práctica:

  1. Filtra y edita texto:
    cat texto.txt | grep "Linux" | sed 's/Linux/Unix/'
    
  2. Procesa con awk después:
    cat personas.txt | grep "30" | awk '{print "Edad:", $2}'
    
  3. Crea un script combinado:
    nano flujo.sh
    #!/bin/bash
    cat texto.txt | grep "genial" | sed 's/genial/increíble/' > resultado.txt
    chmod +x flujo.sh
    ./flujo.sh
    cat resultado.txt
    
  4. Añade análisis con awk:
    nano flujo.sh
    cat personas.txt | grep "[0-9]" | awk '{sum += $2} END {print sum}' > total.txt
    ./flujo.sh
    cat total.txt
    
  5. Prueba un flujo completo:
    ls -l | grep "^-" | awk '{print $5}' | sort -n | tail -n 1
    
    Muestra el tamaño del archivo más grande.

Consejo

Usa > o >> para guardar resultados de flujos complejos. 💡


🛠️ Ejercicios prácticos

  1. Grep:
    • Busca todas las líneas con números en texto.txt.
  2. Sed:
    • Reemplaza "mundo" por "amigos" en texto.txt y guarda.
  3. Awk:
    • Extrae edades de personas.txt y calcula el promedio.
  4. Regex:
    • Usa grep con regex para encontrar emails en un texto.
  5. Desafío:
    • Crea un script que combine grep, sed y awk para procesar un archivo y guardar resultados.

📝 Evaluación

Cuestionario corto (5 preguntas):

  1. ¿Qué hace el comando grep?
  2. ¿Cómo usa sed para reemplazar texto?
  3. ¿Qué representa $1 en awk?
  4. ¿Para qué sirven las expresiones regulares?
  5. ¿Cómo combinan grep y awk en un pipe?

Tarea práctica:

  • Crea un script procesa.sh que:
    • Use grep para buscar líneas con números en personas.txt.
    • Use sed para reemplazar "30" por "35".
    • Use awk para sumar las edades y guardar en edades.txt.
  • Entrega: Script, edades.txt y una nota con los pasos.

🎉 Recursos adicionales

Tip

Experimenta con regex para dominar el procesamiento de texto. 💡


🚀 Siguientes pasos

¡Felicidades por completar el Módulo 4! En el Módulo 5, aprenderás a organizar y escalar tareas con funciones y automatización avanzada. ¡Sigue dominando! ✍️