AWK, parte VI: Loops(for & while), Funções e Considerações finais

parte I: O que é e para que serve
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


- Loop while

O 'while' pode ser visto como uma série de testes condicionais 'if', pra entender melhor, basta traduzir do inglês (isso sempre ajuda): enquanto

awk 'BEGIN { while(++var <= 10) print var}'

Ou seja, ela incrementa a 'var' (por padrão, no inicio 'var=0') e imprime, até 'var=10'.
Veja o seguinte e tente interpretar você mesmo o que acontece:

awk 'BEGIN { while(var++ <=10 ) print var }'

(Se não estiver com um Shell por perto, o resultado é: 1, 2, …, 11. Sim, até 11. Por que?)


- Loop for

É um while com mais recursos, pois podemos especificar a condição inicial, a final e realizar alguma operação a cada iteraçao.

Aqui, a variável inicia em 1, só é válida enquanto for menor que 10 e é incrementada em 1 a cada iteração:

awk 'BEGIN {for(var=1 ; var <= 10 ; var++) print var }'


Realmente não há muito o que falar sobre if, while, for, do...provavelmente você já sabe, e a sintaxe é simplesmente a sintaxe da linguagem C.



- Funções


O AWK possui funções internas pra realizar conversão numérica, rodar comandos do sistema, mostrar hora, tamanho de uma string, funções matemáticas etc.

Por exemplo, vamos calcular o tamanho da frase que dá sentido ao universo:

awk 'BEGIN {print length("O vento do duende vem de roxo quando pisca na inconsciência do javali!")}'

Curiosidade: acentuação(',`,^,~) conta como caractere. Então tenha isso em mente caso precise da length.


A seguir, uma lista das funções mais comuns:


atan(x,y) arco-tangente de y/x, em radianos
cos(x) cosseno de x
sin(x) seno de x
exp() e^x
sqrt(x) raiz quadrada de x
index(strig,isso) procura na string 'string' a primeira ocorrencia da string 'isso'
int(x) menor inteiro próximo de x
length([string]) já usamos
rand() retorna um número entre 0 e 1
strftime(format) retorna o horario no mesmo formato da strftime(), do C
tolower(string) retorna a string minúscula
toupper(string) retorna a string maiúscula
system(command) executa um comando e retorna o exit code



- Mais informações


Código fonte do AWK:
ftp://ftp.gnu.org/pub/gnu/awk

AWK FAQ:
www.faqs.org/faqs/computer-lang/awk/faq/

Manuel completo do GNU AWK, gawk:
www.gnu.org/software/gawk/manual/gawk.html


Uma boa prática que deve ser mantida por quem costuma trabalhar com dados, textos e qualquer tipo informações, é a padronização.
De nada adianta você saber usar awk, sed, Perl, Python...se seus arquivos possuem informações desorganizadas.

Separe bem seus arquivos em pastas, com nomes dos arquivos bem expressivos, de preferência com conteúdo o mais simples e direto possível. Isso vai facilitar muito para, depois, você minar informações e agrupa-las.




Estudando por

Beginning Shell Scripting - Eric Foster-Johnson, John C. Welc, Micah Anderson - Wrox

Nenhum comentário: