Comandos LinuxExplicados en español
/
Ficha26 / 104
Categoría
Texto
Ejemplos
6
Ver también
sed · grep · cut · sort

awk

Alfred Aho, Peter Weinberger, Brian Kernighan

Procesa y extrae columnas de texto según patrones.

Lee texto línea por línea, lo parte en campos (columnas) y te deja trabajar con cada uno. Lo usas para extraer datos, sumar números, filtrar líneas o procesar logs. En Debian el awk que viene instalado es mawk; si necesitas funciones exclusivas de GNU awk, instala el paquete gawk.

Sintaxisawk [opciones] SCRIPT ARCHIVO...
§ 1

Despiece

6 ejemplos
Imprimir la segunda columna

Imprimir la segunda columna

3 piezas
Lámina01 / 06
Comandoawk '{print $2}' datos.txt
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1awkComandoEl comando para procesar texto por columnas.
2'{print $2}'ValorScript: imprime el segundo campo ($2) de cada línea.
3datos.txtArgumentoArchivo con datos separados por espacios.
Resultado

Muestra solo la segunda columna de cada línea.

Imprimir líneas con número mayor a 100

3 piezas
Lámina02 / 06
Comandoawk '$3 > 100 {print $0}' reporte.txt
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1awkComandoEl comando para procesar texto por columnas.
2'$3 > 100 {print $0}'ValorImprime línea completa solo si campo 3 > 100.
3reporte.txtArgumentoArchivo con datos numéricos.
Resultado

Muestra solo las líneas cuya tercera columna supera 100.

Imprimir líneas que coinciden con patrón

3 piezas
Lámina03 / 06
Comandoawk '/error/ {print}' log.txt
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1awkComandoEl comando para procesar texto por columnas.
2'/error/ {print}'ValorSolo procesa líneas que contienen 'error' y las imprime.
3log.txtArgumentoArchivo de log a procesar.
Resultado

Muestra solo las líneas del log que contienen la palabra error.

Sumar una columna

3 piezas
Lámina04 / 06
Comandoawk '{s+=$3} END {print s}' ventas.txt
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1awkComandoEl comando para procesar texto por columnas.
2'{s+=$3} END {print s}'ValorSuma campo 3 en cada línea y al final imprime el total.
3ventas.txtArgumentoArchivo con números en la tercera columna.
Resultado

Muestra la suma total de la columna 3.

Imprimir columnas con texto fijo

3 piezas
Lámina05 / 06
Comandoawk '{print $1 ":" $3}' usuarios.txt
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1awkComandoEl comando para procesar texto por columnas.
2'{print $1 ":" $3}'ValorImprime campo 1, dos puntos y campo 3.
3usuarios.txtArgumentoArchivo con datos por columnas.
Resultado

Muestra pares como 'juan:admin' usando los dos puntos como separador visual.

Usar otro separador de campos

4 piezas
Lámina06 / 06
Comandoawk -F: '{print $1}' /etc/passwd
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1awkComandoEl comando para procesar texto por columnas.
2-F:OpciónUsa los dos puntos como separador de campos en vez de los espacios.
3'{print $1}'ValorScript: imprime el primer campo de cada línea.
4/etc/passwdArgumentoEl archivo de cuentas del sistema, con campos separados por dos puntos.
Resultado

Muestra los nombres de usuario del sistema, uno por línea: root, daemon, bin, etc.

§ 2

Opciones

Las que sí vas a usar
OpciónQué hace
-FDefine el separador de campos. Ejemplo: -F: para archivos separados con dos puntos, -F, para CSV sencillos.
-vAsigna una variable antes de ejecutar el script. Ejemplo: -v limite=100.
-fLee el script desde un archivo en lugar de escribirlo en la línea de comandos.
§ 3

Fallas comunes

FallaRemedio
Confundir comillas en shellEl script suele tener espacios o llaves; usa comillas simples: '{print $2}' para que el shell no lo rompa.
Usar $1 fuera de contexto o con separador incorrectoVerifica el separador de campos (-F) o si los espacios son múltiples. awk trata espacios múltiples como un solo separador por defecto.
Olvidar END para totalesPara sumar, haz acumulación por línea y el total en END: '{s+=$3} END {print s}'.
Comparar valores que traen texto pegado, como 10MB > 9MB.Si el campo no es un número limpio, awk lo compara como texto y "10MB" queda antes que "9MB". Quita las unidades primero o fuerza el número con $1+0.
§ 4

Preguntas frecuentes

¿Qué es awk y para qué sirve?
awk es un lenguaje pequeño para procesar texto por columnas. Sirve para extraer campos, filtrar líneas por patrones, hacer cálculos y generar reportes. En Debian viene mawk como awk; en otras distros suele ser gawk, y lo básico funciona igual en los dos.
¿Cuál es la diferencia entre awk y sed?
sed trabaja línea por línea con reemplazos y borrados. awk trabaja por campos (columnas) y permite hacer operaciones matemáticas y condicionales.
¿Cómo extraigo una columna con awk?
Usa $1 para la primera columna, $2 para la segunda, etc. Ejemplo: awk '{print $2}' archivo.txt.
¿Cómo cambio el separador en awk?
Con la opción -F. Por ejemplo, para archivos CSV con comas: awk -F, '{print $1}' archivo.csv.
¿Cómo sumo una columna en awk?
Acumulas en una variable y usas END para imprimir el total: awk '{s+=$3} END {print s}' archivo.txt.
§ 5

Ver también