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.