AWK
AWK es un lenguaje de programación diseñado para procesar datos basados en texto(ficheros, flujos de datos, etc). La función básica de AWK es buscar en los archivos o flujos de datos líneas con patrones determinados y realización de acciones especificas.
Es muy utilizado para procesar la salida de otro comando y realizar tareas más o menos complejas como sustituciones, eliminaciones, comparaciones,… Te da una gran versatilidad para este tipo de tareas.
Sintaxis
# awk „ [condición] { acción } „ fichero
# fichero | awk „ [condición] { acción } „
Ejemplos de AWK
Muestra solo la columna 9 de la salida del comando “ls -ltr *.flar”:
ls -ltr *.flar | awk '{print $9}'
Muestra solo la columna 1 utilizando el delimitador “:” de la salida del comando “cat OK_backups.out”:
cat OK_backups.out | awk -F ":" '{print $1}'
Compara dos ficheros. Si la linea COMPLETA se repite, muestra las lineas que solo estan en file1.txt y no estan en file2.txt
awk 'NR == FNR{a[$0];next} !($0 in a)' listado_backup_semanal listado_maquinas
Busca y reemplaza “palabra1” por “palabra2” línea a línea:
awk '{sub(/palabra1/,"palabra2")}; 1' # replace only 1st instance
gawk '{$0=gensub(/palabra1/,"palabra2",4)}; 1' # replace only 4th instance
awk '{gsub(/palabra1/,"palabra2")}; 1' # replace ALL instances in a line
Compara dos ficheros y muestra las lineas COMPLETAS que se repiten en los 2 archivos:
awk 'NR==FNR{a[$0];next} $0 in a' file1 file2
Compara dos ficheros y saca los registros en los que el primer campo es el mismo para los 2 archivos
awk -F: 'NR==FNR{a[$1]=$1;next;}{if ($1 in a) print $0;}' 'OFS=:' file2 file1 > file_repetidos
Compara dos ficheros MEDIANTE EL PRIMER CAMPO y saca solo los registros que se encuentran en file1 y no estan en file2
awk -F: 'NR==FNR{a[$1]=$1;next;}!($1 in a)' file2 file1 > file3
Borrar las líneas repetidas de un fichero
awk -F: '!_[$1]++' file1 > file2