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.