AWK - Sintaxe Básica

AWK é simples de usar. Podemos fornecer comandos AWK diretamente da linha de comando ou na forma de um arquivo de texto contendo comandos AWK.

Linha de Comando AWK

Podemos especificar um comando AWK entre aspas simples na linha de comando, conforme mostrado -

awk [options] file ...

Exemplo

Considere um arquivo de texto marks.txt com o seguinte conteúdo -

1) Amit     Physics    80
2) Rahul    Maths      90
3) Shyam    Biology    87
4) Kedar    English    85
5) Hari     History    89

Vamos exibir o conteúdo completo do arquivo usando AWK da seguinte maneira -

Example

[jerry]$ awk '{print}' marks.txt

Ao executar este código, você obtém o seguinte resultado -

Output

1) Amit     Physics    80
2) Rahul    Maths      90
3) Shyam    Biology    87
4) Kedar    English    85
5) Hari     History    89

Arquivo de programa AWK

Podemos fornecer comandos AWK em um arquivo de script, conforme mostrado -

awk [options] -f file ....

Primeiro, crie um arquivo de texto command.awk contendo o comando AWK conforme mostrado abaixo -

{print}

Agora podemos instruir o AWK a ler comandos do arquivo de texto e executar a ação. Aqui, alcançamos o mesmo resultado mostrado no exemplo acima.

Example

[jerry]$ awk -f command.awk marks.txt

Ao executar este código, você obtém o seguinte resultado -

Output

1) Amit  Physics 80
2) Rahul Maths   90
3) Shyam Biology 87
4) Kedar English 85
5) Hari  History 89

Opções padrão AWK

AWK suporta as seguintes opções padrão que podem ser fornecidas na linha de comando.

A opção -v

Esta opção atribui um valor a uma variável. Permite atribuição antes da execução do programa. O exemplo a seguir descreve o uso da opção -v.

Example

[jerry]$ awk -v name=Jerry 'BEGIN{printf "Name = %s\n", name}'

Ao executar este código, você obtém o seguinte resultado -

Output

Name = Jerry

A opção --dump-variables [= arquivo]

Ele imprime uma lista classificada de variáveis ​​globais e seus valores finais para o arquivo. O arquivo padrão éawkvars.out.

Example

[jerry]$ awk --dump-variables ''
[jerry]$ cat awkvars.out

Ao executar o código acima, você obtém o seguinte 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"

A opção --help

Esta opção imprime a mensagem de ajuda na saída padrão.

Example

[jerry]$ awk --help

Ao executar este código, você obtém o seguinte 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

A opção --lint [= fatal]

Esta opção permite a verificação de construções não portáteis ou duvidosas. Quando uma discussãofatalfor fornecido, ele trata as mensagens de aviso como erros. O exemplo a seguir demonstra isso -

Example

[jerry]$ awk --lint '' /bin/ls

Ao executar este código, você obtém o seguinte 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!

A opção --posix

Esta opção ativa a compatibilidade estrita com POSIX, na qual todas as extensões comuns e específicas do gawk são desabilitadas.

A opção --profile [= arquivo]

Esta opção gera uma versão impressa do programa no arquivo. Arquivo padrão éawkprof.out. O exemplo simples abaixo ilustra isso -

Example

[jerry]$ awk --profile 'BEGIN{printf"---|Header|--\n"} {print} 
END{printf"---|Footer|---\n"}' marks.txt > /dev/null 
[jerry]$ cat awkprof.out

Ao executar este código, você obtém o seguinte 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"
   }

A opção --traditional

Esta opção desativa todas as extensões específicas do gawk.

A opção --version

Esta opção exibe as informações da versão do programa AWK.

Example

[jerry]$ awk --version

Quando este código é executado, ele produz o seguinte resultado -

Output

GNU Awk 4.0.1
Copyright (C) 1989, 1991-2012 Free Software Foundation.