AWK: sintaxis básica
AWK es fácil de usar. Podemos proporcionar comandos AWK directamente desde la línea de comandos o en forma de un archivo de texto que contenga comandos AWK.
Línea de comandos AWK
Podemos especificar un comando AWK entre comillas simples en la línea de comando como se muestra:
awk [options] file ...
Ejemplo
Considere un archivo de texto marks.txt con el siguiente contenido -
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
Visualicemos el contenido completo del archivo usando AWK de la siguiente manera:
Example
[jerry]$ awk '{print}' marks.txt
Al ejecutar este código, obtiene el siguiente resultado:
Output
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
Archivo de programa AWK
Podemos proporcionar comandos AWK en un archivo de script como se muestra:
awk [options] -f file ....
Primero, crea un archivo de texto command.awk que contiene el comando AWK como se muestra a continuación -
{print}
Ahora podemos indicarle al AWK que lea los comandos del archivo de texto y realice la acción. Aquí, logramos el mismo resultado que se muestra en el ejemplo anterior.
Example
[jerry]$ awk -f command.awk marks.txt
Al ejecutar este código, obtiene el siguiente resultado:
Output
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
Opciones estándar AWK
AWK admite las siguientes opciones estándar que se pueden proporcionar desde la línea de comandos.
La opción -v
Esta opción asigna un valor a una variable. Permite la asignación antes de la ejecución del programa. El siguiente ejemplo describe el uso de la opción -v.
Example
[jerry]$ awk -v name=Jerry 'BEGIN{printf "Name = %s\n", name}'
Al ejecutar este código, obtiene el siguiente resultado:
Output
Name = Jerry
La opción --dump-variables [= file]
Imprime una lista ordenada de variables globales y sus valores finales en el archivo. El archivo predeterminado esawkvars.out.
Example
[jerry]$ awk --dump-variables ''
[jerry]$ cat awkvars.out
Al ejecutar el código anterior, obtiene el siguiente resultado:
Output
ARGC: 1
ARGIND: 0
ARGV: array, 1 elements
BINMODE: 0
CONVFMT: "%.6g"
ERRNO: ""
FIELDWIDTHS: ""
FILENAME: ""
FNR: 0
FPAT: "[^[:space:]]+"
FS: " "
IGNORECASE: 0
LINT: 0
NF: 0
NR: 0
OFMT: "%.6g"
OFS: " "
ORS: "\n"
RLENGTH: 0
RS: "\n"
RSTART: 0
RT: ""
SUBSEP: "\034"
TEXTDOMAIN: "messages"
La opción --help
Esta opción imprime el mensaje de ayuda en la salida estándar.
Example
[jerry]$ awk --help
Al ejecutar este código, obtiene el siguiente resultado:
Output
Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options : GNU long options: (standard)
-f progfile --file=progfile
-F fs --field-separator=fs
-v var=val --assign=var=val
Short options : GNU long options: (extensions)
-b --characters-as-bytes
-c --traditional
-C --copyright
-d[file] --dump-variables[=file]
-e 'program-text' --source='program-text'
-E file --exec=file
-g --gen-pot
-h --help
-L [fatal] --lint[=fatal]
-n --non-decimal-data
-N --use-lc-numeric
-O --optimize
-p[file] --profile[=file]
-P --posix
-r --re-interval
-S --sandbox
-t --lint-old
-V --version
La opción --lint [= fatal]
Esta opción permite verificar construcciones dudosas o no portátiles. Cuando una discusiónfatalse proporciona, trata los mensajes de advertencia como errores. El siguiente ejemplo demuestra esto:
Example
[jerry]$ awk --lint '' /bin/ls
Al ejecutar este código, obtiene el siguiente resultado:
Output
awk: cmd. line:1: warning: empty program text on command line
awk: cmd. line:1: warning: source file does not end in newline
awk: warning: no program text at all!
La opción --posix
Esta opción activa la compatibilidad POSIX estricta, en la que todas las extensiones comunes y específicas de gawk están deshabilitadas.
La opción --profile [= archivo]
Esta opción genera una versión bastante impresa del programa en archivo. El archivo predeterminado esawkprof.out. El siguiente ejemplo simple ilustra esto:
Example
[jerry]$ awk --profile 'BEGIN{printf"---|Header|--\n"} {print}
END{printf"---|Footer|---\n"}' marks.txt > /dev/null
[jerry]$ cat awkprof.out
Al ejecutar este código, obtiene el siguiente resultado:
Output
# gawk profile, created Sun Oct 26 19:50:48 2014
# BEGIN block(s)
BEGIN {
printf "---|Header|--\n"
}
# Rule(s) {
print $0
}
# END block(s)
END {
printf "---|Footer|---\n"
}
La opción --traditional
Esta opción desactiva todas las extensiones específicas de gawk.
La opción --version
Esta opción muestra la información de la versión del programa AWK.
Example
[jerry]$ awk --version
Cuando se ejecuta este código, produce el siguiente resultado:
Output
GNU Awk 4.0.1
Copyright (C) 1989, 1991-2012 Free Software Foundation.