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 iterações do padrão Shell.
Elas são: if, while, for, do e similares.
- if
Antes de estudarmos o 'if', vamos criar outro arquivo de texto, com números.
Nesse arquivo, temos o nome de 4 pessoas, idade, há quanto tempo está no VOL(vivaolinux.com.br) e número de posts:
vol.txt
Neil 59 3 2112
Alex 30 5 578
Geddy 40 3 2789
Miulzo 24 1 134
Bom, quem teve o mínimo de contato com progração já sabe exatamente o que é o if.
Então vamos printar na tela quem tem mais de 2mil posts:
awk '{ if($4 > 2000) print $1 }' vol.txt
Bem simples: se a condição 'if' for satisfeita, ele executa o próximo comando.
Fica mais fácil de fazer se separarmos esse comando em mais linhas. Veja:
awk '
{
if($4 < 2000)
print $1
}
' vol.txt
Geralmente, se deixa em uma linha quando o programa é pequeno ou estamos com preguiça.
Se for um pouco mais elobarado, colocamos num arquivo .AWK
Vamos agorar elaborar um programa com 'if', 'else' e 'strings' e salvar como: posts.awk
{
if( $4 < 2000 )
printf "%s postou menos de 2000 vezes\n", $1
else
printf "%s postou mais de 2000 vezes\n", $1
}
Executando: awk -f posts.awk vol.txt
Nesse programa, o AWK analisa cada linha, e o 4o campo de cada linha ($4, o número de posts).
Se for menor que 2mil, recai no 'if'.
Senão, recai no 'else'.
Embora tenha usado números no 'if', também poderíamos usar strings, como no script a seguir, enviado pelo usuário 'garoto-do-pintinho-piu':
#!/usr/bin/awk -f
{
if( $1 == “pintinho” )
printf “e o pintinho piu\n”
else if( $1 == “galinha” )
printf “a galinha có\n”
else if( $1 == “galo” )
printf “o galo corococó\n”
else if( $1 == “peru” )
printf “o peru glu glu\n”
else if( $1 == “capote” )
printf “o capote to fraco\n”
else if( $1 == “gato” )
printf “o gato miau\n”
else
printf “outro animal que quiser acrescentar\n”
}
Pronto, além de infernizar alguém pelo youtube, basta enviar um txt com uma lista de animais e mandar o .awk e infernizará seu amigo por linha de comando também, em AWK style.
Para rodar, torne o script executável: sudo chmod +x posts.awk
Rodando: ./posts.awk vol.txt
Ps: caso você não seja meu conterrâneo e do gordinho e quiser saber o que é capote, procure 'animal capote' no google, senão vai achar coisas sobre o autor Truman Capote ou sobre um, ótimo, filme chamado Capote (sobre o mesmo).
- Operadores
O '==' checa a condição de igualdade. Assim como '<', é chamado de operador de comparação.
Ei-los:
< Menor que
<= Menor ou igual a
> Maior que
>= Maior ou igual a
!= Diferente de
== Igual a
- Operadores && e ||
Para testar mais de uma condição, simultâneamente, usamos:
&& - E/AND
|| - OU/OR
Por exemplos, vamos criar um programa para saber quem tem menos de 2mil posts e 30 anos ou menos:
{
if( ($4 < 2000) && ( $2 <= 30 ) )
printf “%s é noob na VOL”, $1
}
Se estiver com preguiça e quiser fazer na linha de comando e o programa não for tão imediato, faça como eu fiz, num editor de texto e com identação, pra ficar mais natural programar e depois vá apagando as quebras de linhas e espaços. Daí resta:
awk '{ if( ($4<2000) && ($2<=30) ) printf "%s é noob na VOL\n",$1}' vol.txt
Nenhum comentário:
Postar um comentário