AWK é uma linguagem de programação interpretada que é, geralmente, usada para deixar os scripts de shell mais poderosos e com mais recursos. É usada mais para processar dados nos textos e operações com arquivos.
O nome tem origem na primeira letra do sobrenome de cada um dos criadores: Alfred A ho, Peter W einberger e Brian K ernighan.
Esta linguagem, é considerada por muitos, um importante marco para história da programação, tendo tido bastante influência na criação de outras linguagens de programação, como, por exemplo, Perl e Python.
awk '{ print "Hello, World" }'
awk -f hello.awk
A flag -f diz que o comando a seguir é um programa a ser executado.
Para um programa executável, usar o /usr/bin/awk.
Exemplo, crie um arquivo world.awk com o conteúdo
# !/usr/bin/awk -f
# My first awk script
{ print "Hello, World!" }
Tornando este arquivo executável
chmod +x world.awk
Executando
./world.awk
Variáveis da Linguagem
Salve o arquivo caes.txt
rex marelo calmo magro
branco branco zangado magro
lennon branco brincalhao gordo
fred branco zangado gordo
Imprime o arquivo inteiro
awk '{print $0}'
Podemos usar essas variáveis dentro do comando print. Nele, sempre que colocamos uma vírgula, estamos espaçando
awk '{print "O",$1,"é",$4}' caes.txt
Saída
o rex é magro
o branco é magro
o lennon é gordo
o fred é gordo
awk '{print "O"$1"é"$4}' caes.txt
Saída
o rexémagro
o brancoémagro
o lennonégordo
o fredégordo
Com o begin, o AWK não espera por uma entrada (como digitar ENTER duas vezes), ele executa tudo daquele bloco
awk 'BEGIN {print "Vai ser tudo \n imprimido \n de uma vez só\n"}'
Saída
Vai ser tudo
imprimido
de uma vez só
A única coisa que o print faz que o printf não faz, é colocar automaticamente uma nova linha ao final da string \n.
awk '{ printf "Cor do cachorro %s: %s\n", $1, $2}' caes.txt
Não pode começar variáveis por dígitos, elas são case sensitivo, não devem ter o mesmo nome das variáveis do AWK, nem de outros comandos e não precisam ser inicializadas ou declaradas.
Ao usar pela primeira uma variável, ela é tanto uma string vazia(“”) como “0”, mas não é muito bom confiar seu script nesses valores iniciais.
AWK é fracamente tipado, ou seja, você pode atribuir um número a uma variável e sem seguida atribuir uma string, por exemplo.
Ex.: Salvar como “caes2.awk”
BEGIN { nomecor="%-15s %20s\n"; printf nomecor, "Nome", "Cor\n"}
{ printf nomecor, $1, $2}
São as instruções de controle que controlam o fluxo da execução dos programas em AWK. Em AWK, elas são similares as de C, além de possuírem os mesmos loopings e interações do padrão Shell.
Elas são: if, while, for, do e similares.
Arquivo: gnu.txt
Eric 59 3 2112
Linus 30 5 578
Richard 40 3 2789
Marcos 24 1 134
awk '{ if($4 > 2000) print $1 }' gnu.txt
Direcionando a saída
awk 'BEGIN {print 1+1 > "resultado" }'
#!/usr/bin/awk -f
{
if( $1 == "Eric" )
printf "O primeiro\n"
else if( $1 == "Linus" )
printf "o segundo\n"
else
printf "Ouro cara\n"
}
https://pt.wikipedia.org/wiki/Awk
http://www.vivaolinux.com.br/artigo/AWK-Introducao
http://www.zago.eti.br/script/awk.html
http://www.lpic.com.br/shell/comandos/awk/print/print.pdf
http://www.staff.science.uu.nl/~oostr102/docs/nawk/nawkA4.pdf
http://www.faqs.org/faqs/computer-lang/awk/faq/
http://www.gnu.org/software/gawk/manual/gawk.html