CodeGym /Cursos /Docker SELF /Formatação de dados com o uso de `awk`

Formatação de dados com o uso de `awk`

Docker SELF
Nível 8 , Lição 2
Disponível

Formatação de dados com o uso de awk

1. Introdução ao awk

awk — uma ferramenta poderosa para manipulação de texto e dados. Se você imaginar um arquivo de texto como sendo uma tabela, onde as linhas são linhas (óbvio, né?) e as colunas são dados separados por espaços, então o awk vira o seu melhor parceiro. Ele ajuda a selecionar colunas rapidamente, filtrar linhas, formatar dados e até realizar operações aritméticas.

O nome vem dos criadores — Alfred Aho, Peter Weinberger e Brian Kernighan (sim, o mesmo cara que ajudou a criar a linguagem C).

A principal ideia do awk é processar dados usando padrões e ações, o que o torna uma espécie de mini linguagem de programação.

Sintaxe do awk

A sintaxe básica do comando é assim:

awk 'padrão {ação}' arquivo
  • padrão — condição que é checada para cada linha do arquivo.
  • ação — operações feitas nas linhas que correspondem ao padrão.
  • Se o padrão não existir, a ação será executada em todas as linhas.

Exemplo:

awk '{print $1}' data.txt

Esse comando imprime a primeira coluna ($1) de cada linha do arquivo data.txt.


2. Funcionalidades básicas do awk

1. Seleção de colunas

A maneira mais simples de usar o awk é selecionar uma ou mais colunas de um arquivo. Um campo é representado como $n, onde n é o número da coluna, começando de 1.

Exemplo:

Exibir a primeira e a terceira colunas:

awk '{print $1, $3}' data.txt

Digamos que nosso arquivo data.txt seja assim:

John 25 Engineer
Jane 30 Designer
Mike 28 Developer

Resultado:

John Engineer
Jane Designer
Mike Developer

2. Processamento condicional de linhas

Condições permitem processar apenas as linhas que atendem a determinados critérios.

Exemplo:

Exibir linhas onde o valor na segunda coluna é maior que 27:

awk '$2 > 27 {print $1, $2}' data.txt

Resultado:

Jane 30
Mike 28

3. Operações aritméticas

awk pode realizar operações aritméticas. Isso é útil quando você precisa calcular algo rapidamente.

Exemplo:

Adicionar 10 ao valor da segunda coluna:

awk '{print $1, $2+10}' data.txt

Resultado:

John 35
Jane 40
Mike 38

4. Contagem de linhas

awk sabe automaticamente quantas linhas foram processadas. Essa informação está armazenada na variável NR (Número de Registros).

Exemplo:

Contar o número de linhas no arquivo:

awk 'END {print NR}' data.txt

Resultado:

3

3. Recursos Avançados

1. Formatação de saída

awk suporta saída formatada poderosa usando a função printf. Isso é um análogo da função printf em C.

Exemplo:

Imprimir dados com alinhamento:

awk '{printf "%-10s %-5s %-10s\n", $1, $2, $3}' data.txt

Resultado:

John       25    Engineer  
Jane       30    Designer  
Mike       28    Developer 

2. Variáveis

Você pode usar variáveis para armazenar dados e simplificar o trabalho.

Exemplo:

Calcular a soma da segunda coluna:

awk '{sum += $2} END {print "Total Age:", sum}' data.txt

Resultado:

Total Age: 83

3. Expressões regulares

awk suporta expressões regulares para pesquisar linhas.

Exemplo:

Imprimir linhas onde a primeira coluna contém a letra J:

awk '/J/ {print $0}' data.txt

Resultado:

John 25 Engineer
Jane 30 Designer

4. Exemplo prático

1. Análise de um log do sistema

Suponha que temos um arquivo de log do sistema /var/log/syslog, e queremos descobrir quais processos são mencionados com mais frequência.

Comando:

cat /var/log/syslog | awk '{print $5}' | sort | uniq -c | sort -nr | head -10

O que ele faz:

  1. cat /var/log/syslog — lê o conteúdo do arquivo.
  2. awk '{print $5}' — extrai a quinta coluna (nome do processo).
  3. sort — ordena as linhas alfabeticamente.
  4. uniq -c — conta o número de linhas únicas.
  5. sort -nr — ordena as linhas em ordem decrescente pelo valor numérico.
  6. head -10 — exibe os 10 processos principais.

2. Preparando um relatório de salários

Temos um arquivo chamado salaries.txt:

John 25 4000
Jane 30 5000
Mike 28 4500

Objetivo:

Aumentar os salários em 10% e exibir o relatório final.

Solução:

awk '{new_salary = $3 * 1.1; printf "%-10s %-5s %-10.2f\n", $1, $2, new_salary}' salaries.txt

Resultado:

John       25    4400.00
Jane       30    5500.00
Mike       28    4950.00

5. Erros comuns ao trabalhar com awk

Problemas com delimitadores

Por padrão, o awk usa espaços ou tabulação como delimitador. Se seus dados estão separados por outro caractere (como vírgulas ou dois-pontos), você precisa especificar isso usando a opção -F.

Exemplo:

Arquivo data.csv:

John,25,Engineer
Jane,30,Designer
Mike,28,Developer

Comando para trabalhar com CSV:

awk -F',' '{print $1, $3}' data.csv

Resultado:

John Engineer
Jane Designer
Mike Developer

Ignorando campos por causa de formato errado

Às vezes, as linhas podem conter espaços inesperados ou colunas ausentes. Isso pode causar erros. Sempre é uma boa ideia verificar os dados antes de começar a trabalhar.

Aplicação prática

Você acabou de aprender a usar awk para analisar logs do sistema, processar dados salariais e criar relatórios. Essas habilidades vão te ajudar a trabalhar com grandes bancos de dados, arquivos CSV e logs em projetos reais. Se você trabalha em DevOps, a análise de logs do sistema usando awk vai ser sua superpoder. E se você é desenvolvedor, essa é uma ótima maneira de manipular dados rapidamente diretamente do terminal.

Para aprofundar o estudo do awk, recomendo dar uma olhada na documentação oficial do GNU Awk. Agora você sabe como deixar seus dados mais "obedientes"!

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION