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.