Resumen
awk lee la entrada como registros (por defecto: líneas), la divide por el delimitador de campo (FS) y luego aplica patrones/acciones { ... } para producir la salida deseada (OFS). Usos comunes incluyen extracción de columnas, filtrado condicional, cálculo de sumas/promedios y conversión de formato.
Variables integradas clave
Variables integradas representativas que controlan el comportamiento de entrada/salida y el formato.
- NR: Número de registro (línea) leído hasta ahora
- FNR: Número de registro en el archivo actual
- NF: Número de campos en el registro actual
- FS: Delimitador de campo de entrada (espacio por defecto)
- OFS: Delimitador de campo de salida (espacio por defecto)
- RS: Delimitador de registro (salto de línea por defecto)
- ORS: Delimitador de registro de salida (salto de línea por defecto)
Forma básica
awk '패턴 { 액션 }' input.txt
awk -f program.awk input.txt
Se pasa un bloque de patrón/acción en una línea, o un archivo de script con -f.
Opciones principales
Opciones de uso frecuente en la práctica, agrupadas por situación. Incluye opciones compatibles con gawk.
1) 기본 실행/입력
2) 필드/변수 전달
3) 디버깅/호환(gawk)
4) 도움말/버전
Comando generado:
Combina los comandos.
Descripción:
`awk` Ejecutando el comando.
Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.
Patrones de uso frecuente
Extracción de columnas
awk -F ':' '{ print $1, $3 }' /etc/passwd
Muestra solo el 1er y 3er campo, separados por dos puntos
Filtro condicional
awk '$5 > 100 { print }' data.tsv
Muestra solo los registros donde el valor del 5º campo es mayor que 100
Ejemplo de agregación
awk '{ sum += $2 } END { print sum }' data.txt
Suma de la segunda columna
Paso de variables y formato
awk -v OFS=',' '$1=="KEY" { print $1, $2, $3 }' input.txt
Especifica OFS como coma y muestra solo una clave específica
Consejos prácticos
El procesamiento de flujo línea por línea hace que la combinación con pipes sea muy potente.
- Se pueden usar expresiones regulares para el delimitador de campo: -F '[,:\t]+'
- Se puede escribir el programa en partes usando múltiples -e
- Los scripts largos se pueden separar con -f y gestionar con control de versiones (git)
- Ajustar OFS/ORS apropiadamente para el formato de salida
- Para entradas grandes, simplificar la pipeline dejando solo las operaciones mínimas necesarias