Introducción
Además de filtrar y extraer texto, awk es un potente lenguaje de procesamiento de texto que puede realizar operaciones aritméticas. Permite sumar columnas, calcular promedios y contar apariciones, por lo que puede generar informes y estadísticas directamente desde la línea de comandos.
Esta es una de las razones por las que awk sigue siendo útil después de varias décadas: muchas tareas operativas requieren generar informes sencillos a partir de archivos de texto, y awk permite hacerlo sin usar una hoja de cálculo completa ni un entorno de programación independiente.
En este laboratorio aprenderá a usar awk para:
- Inicializar variables: establecer valores iniciales mediante el bloque
BEGIN. - Realizar cálculos: crear totales acumulados sumando valores de cada línea.
- Imprimir resultados finales: mostrar totales y resúmenes mediante el bloque
END. - Contar de forma condicional: contar solo las filas que cumplen criterios específicos.
Inicializar una variable
Antes de empezar a calcular, normalmente es necesario inicializar las variables. En awk, el bloque BEGIN es el lugar ideal para hacerlo, porque se ejecuta una vez antes de procesar cualquier línea.
Por eso, BEGIN es el lugar natural para las tareas de preparación, como inicializar contadores, totales o encabezados. Cumple la misma función que el código de inicialización en otros lenguajes de programación.
Inspeccione el archivo de datos data.txt:
cat data.txt
El archivo contiene dos columnas: Item ($1) y Quantity ($2).
Crearemos una variable llamada total y le asignaremos el valor 0.
Ejecute este comando:
awk 'BEGIN { total=0; print "Calculator ready. Total is initialized to:", total }' data.txt
Cómo funciona:
awkejecuta el bloqueBEGIN.- Asigna el valor 0 a la variable
total. - Imprime el mensaje.
- Como no hay ningún bloque de código principal después del bloque
BEGIN, se detiene ahí (aunque técnicamente queda listo para procesar el archivo).
Sumar una columna
Ahora procesaremos el archivo. Queremos sumar los valores de la segunda columna ($2), que representa la cantidad.
Por cada línea que lea awk, sumaremos $2 a la variable total.
La sintaxis para asignar una suma es total += $2, que es una forma abreviada de total = total + $2.
Aquí es donde awk deja de ser simplemente un impresor de columnas. Mantiene el estado mientras recorre el archivo, lo que le permite construir totales y resúmenes de forma incremental en lugar de limitarse a imprimir las filas sin procesar.
Ejecute este comando para ver cómo se realiza el cálculo línea por línea:
awk 'BEGIN { total=0 } { total += $2; print "Added", $1, "("$2") - Current Total:", total }' data.txt
Lógica:
- BEGIN: inicializa
totalen 0. - Bucle principal: para cada línea, suma la cantidad (
$2) atotale imprime el estado.
Verá que el total aumenta a medida que se procesa cada elemento.
Imprimir el resultado final
Normalmente, solo necesita el total final, no los pasos intermedios.
Para ello, usamos el bloque END. Este bloque se ejecuta una vez después de procesar todas las líneas.
Por tanto, un script de awk suele tener tres fases: BEGIN para la preparación, el bloque principal para procesar cada registro y END para el informe final. Esta estructura es uno de los modelos mentales más importantes para usar awk de forma eficaz.
Ejecute la versión depurada del comando:
awk 'BEGIN { total=0 } { total += $2 } END { print "Final Total Quantity:", total }' data.txt
Desglose:
BEGIN: establecetotalen 0.{ ... }: lee el archivo y suma$2atotalsin mostrar nada.END: cuando llega al final del archivo, imprime el valor final detotal.
El resultado debe ser Final Total Quantity: 22.
Contar de forma condicional
A menudo es necesario contar apariciones según una condición, en lugar de sumar simplemente todos los valores.
Por ejemplo: «¿Cuántos elementos tienen una cantidad en stock superior a 4?»
- Inicialice un contador (
count = 0). - Compruebe cada línea:
if ($2 > 4). - Si la condición es verdadera, incremente el contador:
count++. - Imprima el resultado en el bloque
END.
Este ejemplo muestra cómo awk combina el análisis, las condiciones y la aritmética en un único recorrido del archivo. Para muchos informes operativos, esto significa que no necesita escribir un programa independiente en otro lenguaje.
Ejecute el comando de recuento:
awk 'BEGIN { count=0 } { if ($2 > 4) count++ } END { print "Items with quantity > 4:", count }' data.txt
La respuesta debe ser 2 (Apple y Cherry).
También puede combinar la lógica. El siguiente comando suma solo los valores superiores a 4:
awk 'BEGIN { sum=0 } { if ($2 > 4) sum += $2 } END { print "Sum of quantities > 4:", sum }' data.txt
La suma es 13 (5 + 8).
Resumen
En este laboratorio aprendió a usar awk para realizar cálculos y obtener estadísticas:
- Bloque BEGIN: inicializar variables antes de comenzar el procesamiento.
- Aritmética (
+=): realizar cálculos, como sumar columnas fila por fila. - Condicionales (
if): ejecutar lógica solo cuando se cumplen criterios específicos, como en el recuento. - Bloque END: mostrar los resultados finales cuando termina el procesamiento del archivo.
Estas funciones permiten generar resúmenes y métricas de datos avanzados a partir de archivos de texto directamente en el terminal.



