📚 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
-i
ignora 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
-i
edita 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
sed
y regex:echo "123abc" | sed 's/[0-9]\+/NUM/'
[0-9]\+
encuentra uno o más dígitos. - Filtra con
awk
y 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
awk
despué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.txt
y guarda.
- Reemplaza "mundo" por "amigos" en
- Awk:
- Extrae edades de
personas.txt
y calcula el promedio.
- Extrae edades de
- Regex:
- Usa
grep
con regex para encontrar emails en un texto.
- Usa
- Desafío:
- Crea un script que combine
grep
,sed
yawk
para 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
sed
para reemplazar texto? - ¿Qué representa
$1
enawk
? - ¿Para qué sirven las expresiones regulares?
- ¿Cómo combinan
grep
yawk
en un pipe?
Tarea práctica:
- Crea un script
procesa.sh
que:- Use
grep
para buscar líneas con números enpersonas.txt
. - Use
sed
para reemplazar "30" por "35". - Use
awk
para sumar las edades y guardar enedades.txt
.
- Use
- Entrega: Script,
edades.txt
y una nota con los pasos.
🎉 Recursos adicionales¶
- Documentación:
man grep
,man sed
,man awk
. - Enlaces:
- Guía de
grep
ysed
(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! ✍️