AWK, parte V: Operações Aritméticas e Direcionamento da saída

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


- Operações Aritméticas

Já vimos como comparar variáveis, agora veremos como muda-las.
Isso pode ser feito através de adição, subtração, multiplicaçao, divisão e resto da divisão, inclusive com pontos flutuantes (float).

Por exemplo, para exibir o resultado de uma soma:

awk 'BEGIN {var=1 ; print var+var}'

O 'BEGIN' é porque, por padrão, o AWK espera um endereço de arquivo pra operar nele.
Nesse caso, como queremos apenas que o comando seja executado, sem a necessidade de um arquivo, usamos o 'BEGIN'. O restante é intuitivo.

Podemos, assim como em diversas outras linguagens, usar:
var=var+var 'var' dobra de valor
var++         'var' recebe 'var' e depois é incrementada (var=var+1)
++var         primeiro 'var' é incrementada, depois atribuída a ela própria incrementada
var1+=var2 é o mesmo que 'var1=var1+var2'


Pra entender melhor, faça e veja:
awk '
BEGIN
{
var=1;
var=var+var; print var;

var=0;
print var++;

var=0;
print ++var;

var1=1;
var2=2;
print var1+=var2;
}
    '

- Direcionando a saída

Ao invés de obter os resultados na tela, podemos passar esse resultado para um arquivo, exatamente como Shell faz.

Mas, aqui vai uma ressalva, o Shell usa '>' pra redirecionar a saída, assim como o AWK usa '>' como operador 'maior que'. Então, muito cuidado. Pra não ter erro, o nome do arquivo, que será a saída, estará entre aspas. Por exemplo:

awk 'BEGIN {print 1+1 > “resultado” }'

abra o arquivo resultado: cat resultado
que terá a resposta 2.

Porém, se já houver um arquivo chamado 'resultado', o AWK irá sobrescrever o dito cujo e todas as informações que estavam anteriormente lá serão perdidas.
Por via das dúvidas, utilize sempre o comando “>>”, que anexa o resultado ao fim do arquivo e caso este não exista, é criado.

akw 'BEGIN {print 2+2 >> “resultado”}'

cat resultado
2
4





Estudando por

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

Nenhum comentário: