parte II: Comandos Básicos
parte III: Variáveis
parte IV: if e Operadores de Comparação
parte V: Operações Aritméticas e Direcionamento da saída
parte VI: Loops(for & while), Funções e Considerações finais
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
--
Estudando porBeginning Shell Scripting - Eric Foster-Johnson, John C. Welc, Micah Anderson - Wrox
Nenhum comentário:
Postar um comentário