Loop while
O
while pode ser visto como uma série de testes condicionais
if. Para 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ção.
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 para 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 ocorrência 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 horário 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:
AWK FAQ:
Manual completo do GNU AWK, gawk:
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 os 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 agrupá-las.
Todo mundo sabe a genialidade por trás da implementação do
GNU/Linux, mas nem todo mundo lembra da ORGANIZAÇÃO desse sistema.
É linda! Exemplar!
Seja organizado e padronizado também. Não é bom, é essencial.
Artigo previamente publicado em: