Skip to content

Instantly share code, notes, and snippets.

@geodis
Last active April 25, 2023 20:43
Show Gist options
  • Save geodis/9864f0107b5099c2fabc518c4e951dd6 to your computer and use it in GitHub Desktop.
Save geodis/9864f0107b5099c2fabc518c4e951dd6 to your computer and use it in GitHub Desktop.
awk
sintaxis
awk options program file
# Especificar el separador de archivos
-F fs
# file: programa awk
-f file
# declarar variable
-v var=value
Para definir un script awk utilizamos llaves rodeadas por unas comillas simples
awk '{print "hola mundo"}'
Si escribes cualquier cosa, retornara la misma cadena de bienvenida que nosotros proporcionamos.
fin: ctrl + d
# Procesamiento de archivos
# =========================
$0 para toda la línea.
$1 para el primer campo.
$2 para el segundo campo.
$n para el campo enésimo campo.
# imprimo 1er campo con delimitador ":"
$ awk -F: '{print $1}' /etc/passwd
# Múltiples Comandos
# ==================
múltiples comandos, sepáralos con un símbolo de punto y coma
$ echo "hola chris" | awk '{$2="mai"; print $0}'
# Script Desde un Archivo
# =======================
mi_pgma --> {print $1 " home at "$6}
$ awk -F: -f mi_pgma /etc/passwd
# Pre procesamiento
# =================
Si necesitas crear un título o cabecera para tu resultado Puedes utilizar la palabra clave BEGIN
awk 'BEGIN {print "Cabecera"}
{print $0}' myfile
# Post Procesamiento Awk
# ======================
Para ejecutar un script después de procesar los datos, utiliza la palabra clave END:
$ awk 'BEGIN {print "The File Contents:"}
{print $0}
END {print "File footer"}' myfile
# Variables Integradas
# ====================
FIELDWIDTHS Especifica el ancho del campo.
RS Especifica el separador de registros.
FS Especifica un separador de campos.
OFS Especifica un separador de Salidas. (default: " ")
ORS Especifica el separador de Salidas.
ARGC Retorna el número de parámetros pasados.
ARGV Retorna los parámetros de la línea de comandos.
ENVIRON Es un arreglo de las variables de ambiente del shell y sus respectivos valores.
FILENAME El nombre del archivo que está siendo procesado por awk.
NF Cuenta los campos de la línea que está siendo procesada.
NR Retorna el total de registros procesados.
FNR Con esta variable puedes acceder al registro que está siendo procesado.
IGNORECASE Le dice al programa que ignore las diferencias entre mayúsculas y minúsculas.
awk 'BEGIN{FS=":"; OFS="-"} {print $1,$6,$7}' /etc/passwd
Supongamos que tenemos este contenido:
1235.96521
927-8.3652
awk 'BEGIN{FIELDWIDTHS="3 4 4"}{print $1,$2,$3}' testfile
-->
123 5.96 521
927 -8.3 652
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment