Procesar texto con awk

última modificación:

awk es una herramienta para procesar texto estructurado en columnas. Donde grep filtra líneas y sed sustituye cadenas, awk permite operar sobre campos concretos de cada línea. Es especialmente útil con logs y con la salida de comandos como ps o df.

Por defecto, awk divide cada línea en campos separados por espacios. $1 es el primer campo, $2 el segundo, y $0 es la línea completa.

Para mostrar solo el primer campo de cada línea de un archivo:

awk '{print $1}' archivo.txt

Para filtrar líneas que contienen un patrón y mostrar un campo concreto:

awk '/error/ {print $1, $4}' /var/log/apache2/error.log

Esto muestra los campos 1 y 4 de las líneas que contienen «error».

awk también permite cambiar el separador de campo con -F. Por ejemplo, para mostrar el nombre de usuario y la ruta del directorio personal desde /etc/passwd (separado por :):

awk -F: '{print $1, $6}' /etc/passwd

Para sumar los valores de una columna (por ejemplo, el tamaño de archivos):

ls -l | awk '{suma += $5} END {print suma}'

La sección END se ejecuta una sola vez al final del procesamiento, lo que la hace útil para calcular totales.

Combinado con tuberías, awk es muy práctico para extraer información de la salida de otros comandos sin necesidad de redirigir a archivos intermedios.