AWK: Introducción y ejemplos

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

 

 

Compartir:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *