Procesamiento de texto con cut, tr, tee, sed y awk
🎯 Objetivo del módulo Extraer columnas, transformar caracteres y procesar registros desde la terminal combinando herramientas pequeñas mediante pipes.
1. Datos de ejemplo #
Los ejemplos usan un archivo separado por comas:
1nombre,departamento,salario 2Ana,Desarrollo,2400 3Luis,Sistemas,2600 4Marta,Desarrollo,2800
2. cut: extraer campos #
cut selecciona posiciones o campos de cada línea.
1cut -d, -f1 empleados.csv 2cut -d, -f1,3 empleados.csv
| Opción | Función |
|---|---|
-d, | usa la coma como delimitador |
-f1 | selecciona el primer campo |
-f1,3 | selecciona los campos primero y tercero |
-c1-10 | selecciona posiciones de caracteres |
cut es apropiado para formatos simples. No interpreta correctamente CSV complejo con comas dentro de campos entrecomillados.
3. tr: transformar o eliminar caracteres #
tr trabaja con la entrada estándar.
1printf '%s\n' 'hola mundo' | tr '[:lower:]' '[:upper:]' 2printf '%s\n' 'a b' | tr -s ' ' 3printf '%s\n' 'abc123' | tr -d '[:digit:]'
| Opción | Función |
|---|---|
-s | comprime caracteres repetidos |
-d | elimina los caracteres indicados |
4. tee: ver y guardar a la vez #
tee copia la entrada estándar hacia la pantalla y hacia uno o varios archivos.
1grep -i error aplicacion.log | tee errores.txt 2grep -i warning aplicacion.log | tee -a alertas.txt
-a añade al final en lugar de sobrescribir.
Para escribir con privilegios, el proceso que abre el archivo debe tenerlos:
1printf '%s\n' '127.0.0.1 ejemplo.local' | sudo tee -a /etc/hosts
Revisa el contenido antes de modificar archivos del sistema.
5. sed: editar un flujo de texto #
sed procesa las líneas sin modificar el archivo original de forma predeterminada.
Sustituir la primera coincidencia de cada línea #
1sed 's/Desarrollo/DEV/' empleados.csv
Sustituir todas las coincidencias #
1sed 's/error/ERROR/g' aplicacion.log
Mostrar un rango #
1sed -n '2,4p' empleados.csv
Eliminar líneas vacías de la salida #
1sed '/^$/d' archivo.txt
La opción -i modifica el archivo. Antes de usarla, comprueba la transformación sin -i y considera crear una copia de seguridad.
1sed -i.bak 's/antiguo/nuevo/g' configuracion.conf
El comportamiento exacto de -i presenta diferencias entre implementaciones, especialmente entre GNU y BSD sed.
6. awk: procesar registros y columnas #
awk divide cada línea en campos. $1, $2 y siguientes representan esos campos; $0 es la línea completa.
1awk -F, '{print $1, $3}' empleados.csv
Filtrar por una condición #
1awk -F, 'NR > 1 && $3 >= 2600 {print $1, $3}' empleados.csv
Calcular una suma #
1awk -F, 'NR > 1 {total += $3} END {print total}' empleados.csv
Conceptos clave:
-F,define la coma como separador.NRes el número de registro actual.- El bloque principal se ejecuta para cada línea que cumpla la condición.
ENDse ejecuta al terminar la entrada.
7. Combinaciones prácticas #
1cut -d: -f1 /etc/passwd | sort 2awk -F: '$3 >= 1000 {print $1}' /etc/passwd 3tr -s ' ' < datos.txt | sed '/^$/d' 4grep -i error aplicacion.log | tee errores.txt | wc -l
8. Cuándo usar cada herramienta #
| Necesidad | Herramienta |
|---|---|
| Extraer columnas sencillas | cut |
| Traducir o eliminar caracteres | tr |
| Mostrar y guardar un flujo | tee |
| Sustituir o seleccionar líneas | sed |
| Filtrar, calcular y trabajar por campos | awk |
Resumen del tema
Combina herramientas pequeñas: cut extrae, tr transforma, tee duplica, sed edita flujos y awk procesa registros y realiza cálculos.