Uso de awk, sed y grep para procesar texto como un/a pro
Una guía detallada y rica en ejemplos para dominar las herramientas de línea de comandos
Introducción
En el mundo de la administración de sistemas, análisis de logs y procesamiento de datos, las utilidades grep, sed y awk son las aliadas fundamentales de cualquier profesional. Estas herramientas permiten filtrar, transformar y extraer información de archivos de texto de manera rápida y eficiente, sin necesidad de levantar entornos complejos.
En este artículo encontrarás:
- Conceptos básicos de cada herramienta.
- Ejemplos prácticos y casos de uso reales.
- Buenas prácticas y combinaciones avanzadas.
- Referencias a documentación oficial.
1. grep: búsqueda y filtrado de líneas
grep (Global Regular Expression Print) es el punto de partida para extraer líneas que coinciden con un patrón. Su fortaleza reside en la sencillez y rapidez.
Sintaxis básica
grep [opciones] patrón archivo
| Opción | Descripción |
|---|---|
-i |
Ignora mayúsculas y minúsculas. |
-v |
Muestra líneas que no coinciden. |
-r |
Búsqueda recursiva en directorios. |
-n |
Muestra número de línea. |
Ejemplos prácticos
grep -i error /var/log/syslog: Filtra todas las líneas que contienen error sin importar mayúsculas.grep -r TODO ./proyecto: Busca recursivamente la palabra TODO en el directorioproyecto.
Para más detalles, consulta la documentación oficial de grep.
2. sed: editor de streams
sed (stream editor) permite modificar el contenido de un flujo de texto aplicando comandos de edición sofisticados, sin necesidad de abrir un editor interactivo.
Sintaxis básica
sed [opciones] comando archivo
| Expresión | Descripción |
|---|---|
s/patrón/reemplazo/g |
Sustituye todas las ocurrencias del patrón. |
-i |
Modifica el archivo en su lugar. |
-n |
Suprime la salida por defecto. |
Ejemplos avanzados
sed 1,5d archivo.txt: Elimina las líneas de la 1 a la 5.sed -r s/^([0-9]{4})-([0-9]{2})/2/1/g fechas.txt: Reestructura fechas de YYYY-MM a MM/YYYY.sed -n /^Error/ p log.txt: Solo imprime líneas que empiezan con Error.
Más información en la guía oficial de sed.
3. awk: lenguaje de procesamiento de texto
awk es una potente herramienta de programación orientada al procesamiento de archivos de texto estructurados en columnas o campos. Permite ejecutar scripts directamente desde la línea de comandos.
Estructura básica
awk condition { action } archivo
- condition: filtro que define cuándo aplicar la acción.
- action: instrucciones a ejecutar, como imprimir o calcular.
Variables y campos
Por defecto, 1, 2, … son los campos separados por espacios/tabs, y NF es el número de campos.
Ejemplos esenciales
awk { total = 3 } END { print total } datos.csv: Suma la tercera columna.awk -F, 4 > 100 { print 1, 4 } ventas.csv: Imprime nombre y ventas mayores a 100.awk NR % 2 == 0 archivo.txt: Muestra solo líneas pares.
Consulta el manual oficial de gawk para profundizar.
4. Combinaciones y flujos de trabajo
La verdadera potencia se revela cuando encadenas estas utilidades:
- grep para extraer líneas relevantes.
- sed para limpiar o reformatar.
- awk para análisis numérico o tabular.
Ejemplo completo
Supongamos un archivo de registros access.log con formato Apache:
192.168.1.1 - - [01/Jul/2023:10:00:01 0000] GET /index.html HTTP/1.1 200 1024 ...
Pipeline para obtener el total de bytes transferidos por códigos 200:
grep 200 access.log
sed -E s/. [0-9]{3} ([0-9] )/1/
awk { sum = 1 } END { print Bytes totales:, sum }
5. Buenas prácticas y rendimiento
- Prioriza grep para reducir el conjunto de datos antes de procesos más costosos.
- Asegúrate de usar
-Fen awk si no necesitas expresiones regulares. - Evita multiplexar procesos con pipes innecesarios agrupa transformaciones en sed cuando sea posible.
- Para archivos muy grandes, considera herramientas como ripgrep o parallel.
Conclusión
El dominio de grep, sed y awk transforma tareas tediosas en operaciones ágiles y reproducibles. Con práctica y creatividad, podrás procesar millones de líneas en segundos, generar informes, limpiar datos y mucho más.
Empieza hoy mismo a experimentar con estas herramientas y convierte tus scripts en auténticas obras de arte de la productividad.
Deja una respuesta