Introdução
Além de filtrar e extrair texto, awk é uma poderosa linguagem de processamento de texto que também pode realizar operações aritméticas. Ela pode somar colunas, calcular médias e contar ocorrências, permitindo gerar relatórios e estatísticas diretamente pela linha de comando.
Essa é uma das razões pelas quais awk continua sendo útil há décadas: muitas tarefas operacionais envolvem a geração de relatórios simples a partir de arquivos de texto, e awk faz isso sem exigir uma planilha completa ou um ambiente de programação separado.
Neste laboratório, você aprenderá a usar awk para:
- Inicializar variáveis: definir valores iniciais usando o bloco
BEGIN. - Realizar cálculos: criar totais acumulados adicionando valores de cada linha.
- Imprimir resultados finais: exibir totais e resumos usando o bloco
END. - Contar condicionalmente: contar apenas as linhas que atendem a critérios específicos.
Inicializar uma variável
Antes de começar os cálculos, geralmente precisamos inicializar as variáveis. No awk, o bloco BEGIN é o local ideal para isso, pois é executado uma vez antes do processamento de qualquer linha.
Por isso, BEGIN é o local natural para tarefas de configuração, como inicializar contadores, totais ou cabeçalhos. Ele desempenha o mesmo papel que o código de inicialização em outras linguagens de programação.
Inspecione o arquivo de dados data.txt:
cat data.txt
O arquivo contém duas colunas: Item ($1) e Quantity ($2).
Vamos criar uma variável chamada total e defini-la como 0.
Execute este comando:
awk 'BEGIN { total=0; print "Calculator ready. Total is initialized to:", total }' data.txt
Como funciona:
awkexecuta o blocoBEGIN.- Define a variável
totalcomo 0. - Imprime a mensagem.
- Como não há um bloco de código principal depois do bloco
BEGIN, a execução para nesse ponto, embora tecnicamente o programa esteja pronto para processar o arquivo.
Somar uma coluna
Agora vamos processar o arquivo. Queremos somar os valores da segunda coluna ($2), que representa a quantidade.
Para cada linha lida pelo awk, adicionaremos $2 à variável total.
A sintaxe para atribuição com adição é total += $2, que é uma forma abreviada de total = total + $2.
É aqui que awk se torna mais do que um simples exibidor de colunas. Ele mantém o estado à medida que percorre o arquivo, permitindo criar totais e resumos progressivamente, em vez de apenas imprimir as linhas originais.
Execute este comando para observar o cálculo linha a linha:
awk 'BEGIN { total=0 } { total += $2; print "Added", $1, "("$2") - Current Total:", total }' data.txt
Lógica:
- BEGIN: inicializa
totalcom 0. - Loop principal: para cada linha, adiciona a quantidade (
$2) atotale imprime o status.
Você verá o total aumentar à medida que cada item é processado.
Imprimir o resultado final
Normalmente, você quer apenas o total final, e não as etapas intermediárias.
Para isso, usamos o bloco END. Esse bloco é executado uma vez depois que todas as linhas foram processadas.
Por isso, um script awk geralmente tem três fases: BEGIN para a configuração inicial, o bloco principal para o processamento de cada registro e END para o relatório final. Essa estrutura é um dos modelos mentais mais importantes para usar awk com eficiência.
Execute a versão simplificada do comando:
awk 'BEGIN { total=0 } { total += $2 } END { print "Final Total Quantity:", total }' data.txt
Detalhamento:
BEGIN: definetotalcomo 0.{ ... }: lê o arquivo e adiciona$2atotalsem imprimir nada.END: quando o fim do arquivo é alcançado, imprime o valor final detotal.
A saída deve ser Final Total Quantity: 22.
Contagem condicional
Muitas vezes, você precisa contar ocorrências com base em uma condição, em vez de simplesmente somar todos os valores.
Por exemplo: “Quantos itens têm uma quantidade em estoque maior que 4?”
- Inicialize um contador (
count = 0). - Verifique cada linha:
if ($2 > 4). - Se a condição for verdadeira, incremente o contador:
count++. - Imprima o resultado no bloco
END.
Isso mostra como awk combina análise, condições e operações aritméticas em uma única passagem pelo arquivo. Para muitos relatórios operacionais, isso significa que você pode evitar escrever um programa separado em outra linguagem.
Execute o comando de contagem:
awk 'BEGIN { count=0 } { if ($2 > 4) count++ } END { print "Items with quantity > 4:", count }' data.txt
A resposta deve ser 2 (Apple e Cherry).
Você também pode combinar lógica. O comando a seguir soma apenas os valores maiores que 4:
awk 'BEGIN { sum=0 } { if ($2 > 4) sum += $2 } END { print "Sum of quantities > 4:", sum }' data.txt
A soma é 13 (5 + 8).
Resumo
Neste laboratório, você aprendeu a usar awk para realizar cálculos e gerar estatísticas:
- Bloco BEGIN: inicializar variáveis antes do início do processamento.
- Aritmética (
+=): realizar cálculos, como somar colunas linha a linha. - Condicionais (
if): executar lógica apenas quando critérios específicos são atendidos, como na contagem. - Bloco END: exibir os resultados finais depois que o processamento do arquivo for concluído.
Esses recursos permitem gerar resumos e métricas detalhados a partir de arquivos de texto diretamente no terminal.



