📚 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:
- Crea un archivo de prueba:
echo "Hola mundo\nLinux es genial" > texto.txt cat texto.txt - Busca una palabra con
grep:Observa la línea que contiene "mundo".grep "mundo" texto.txt - Usa una opción con
-i:grep -i "hola" texto.txt-iignora mayúsculas/minúsculas. - Busca recursivamente en directorios:
mkdir datos echo "Dato 1" > datos/archivo1.txt grep -r "Dato" datos/ - 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:
- Sustituye texto en el archivo:
Muestra el cambio sin modificar el archivo.
sed 's/mundo/amigo/' texto.txt - Guarda los cambios con
-i:sed -i 's/amigo/mundo/' texto.txt cat texto.txt-iedita el archivo directamente. - Añade una línea con
-e:Añade después de la línea 2.sed -e '2a Nueva línea' texto.txt - 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 - 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:
- Crea un archivo con datos:
echo "Juan 25\nMaria 30" > personas.txt cat personas.txt - Extrae el primer campo con
awk:Muestra los nombres.awk '{print $1}' personas.txt - Filtra por campo:
Muestra nombres con edad > 25.
awk '$2 > 25 {print $1}' personas.txt - 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 - 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:
- Busca líneas con números:
echo "123 texto\nabc" | grep "^[0-9]" - Reemplaza con
sedy regex:echo "123abc" | sed 's/[0-9]\+/NUM/'[0-9]\+encuentra uno o más dígitos. - Filtra con
awky regex:echo "a1 b2 c3" | awk '/[0-9]/ {print $0}' - 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 - 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:
- Filtra y edita texto:
cat texto.txt | grep "Linux" | sed 's/Linux/Unix/' - Procesa con
awkdespués:cat personas.txt | grep "30" | awk '{print "Edad:", $2}' - 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 - 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 - Prueba un flujo completo:
Muestra el tamaño del archivo más grande.
ls -l | grep "^-" | awk '{print $5}' | sort -n | tail -n 1
Consejo
Usa > o >> para guardar resultados de flujos complejos. 💡
🛠️ Ejercicios prácticos¶
- Grep:
- Busca todas las líneas con números en
texto.txt.
- Busca todas las líneas con números en
- Sed:
- Reemplaza "mundo" por "amigos" en
texto.txty guarda.
- Reemplaza "mundo" por "amigos" en
- Awk:
- Extrae edades de
personas.txty calcula el promedio.
- Extrae edades de
- Regex:
- Usa
grepcon regex para encontrar emails en un texto.
- Usa
- Desafío:
- Crea un script que combine
grep,sedyawkpara procesar un archivo y guardar resultados.
- Crea un script que combine
📝 Evaluación¶
Cuestionario corto (5 preguntas):
- ¿Qué hace el comando
grep? - ¿Cómo usa
sedpara reemplazar texto? - ¿Qué representa
$1enawk? - ¿Para qué sirven las expresiones regulares?
- ¿Cómo combinan
grepyawken un pipe?
Tarea práctica:
- Crea un script
procesa.shque:- Use
greppara buscar líneas con números enpersonas.txt. - Use
sedpara reemplazar "30" por "35". - Use
awkpara sumar las edades y guardar enedades.txt.
- Use
- Entrega: Script,
edades.txty una nota con los pasos.
Vídeo con la solución de la evaluación:
🎉 Recursos adicionales¶
- Documentación:
man grep,man sed,man awk. - Enlaces:
- Guía de
grepysed(tutoriales técnicos). - Tutorial de
awk(detalles avanzados).
- Guía de
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! ✍️