===== Exemplos do comando awk ===== ==== Nível Básico ==== * **Imprimir uma coluna específica de um arquivo:** - awk '{print $1}' arquivo.txt - Imprime a primeira coluna de um arquivo de texto. * **Imprimir múltiplas colunas:** - awk '{print $1, $3}' arquivo.txt - Imprime a primeira e a terceira colunas do arquivo. * **Filtrar linhas com base em uma string específica:** - awk '/palavra/' arquivo.txt - Imprime todas as linhas que contêm "palavra". * **Usar delimitador diferente (por exemplo, CSV):** - awk -F',' '{print $1, $2}' arquivo.csv - Usa a vírgula como delimitador para imprimir a primeira e segunda colunas de um arquivo CSV. ==== Nível Intermediário ==== * **Somar valores de uma coluna:** - awk '{soma += $3} END {print soma}' arquivo.txt - Calcula a soma dos valores da terceira coluna de um arquivo. * **Imprimir linhas com base em uma condição numérica:** - awk '$3 > 100' arquivo.txt - Imprime as linhas onde o valor da terceira coluna é maior que 100. * **Substituir texto em uma coluna:** - awk '{gsub("velho", "novo", $2); print}' arquivo.txt - Substitui todas as ocorrências de "velho" por "novo" na segunda coluna. * **Imprimir o número de linhas que atendem a uma condição:** - awk '$3 > 100 {count++} END {print count}' arquivo.txt - Conta o número de linhas onde o valor da terceira coluna é maior que 100. ==== Nível Avançado ==== * **Cálculos complexos com múltiplas colunas:** - awk '{media = ($2 + $3) / 2; print $1, media}' arquivo.txt - Calcula a média dos valores da segunda e terceira colunas e imprime com a primeira coluna. * **Imprimir linhas entre dois padrões:** - awk '/início/,/fim/' arquivo.txt - Imprime as linhas que estão entre "início" e "fim" no arquivo. * **Ordenar linhas com base em uma coluna:** - awk '{print $0}' arquivo.txt | sort -k2 - Usa `awk` para imprimir todas as linhas e o `sort` para ordenar pelo valor da segunda coluna. * **Imprimir linhas com base em múltiplas condições:** - awk '$2 > 50 && $4 < 100' arquivo.txt - Imprime as linhas onde o valor da segunda coluna é maior que 50 **e** o da quarta coluna é menor que 100. ==== Nível Especializado ==== * **Processar um arquivo CSV e calcular a soma condicional:** - awk -F',' '$3 > 50 {soma += $3} END {print soma}' arquivo.csv - Calcula a soma dos valores da terceira coluna para linhas onde o valor é maior que 50, em um arquivo CSV. * **Gerar um relatório formatado:** - awk 'BEGIN {print "Usuário\tUso de Disco"} {print $1, "\t", $3} END {print "Fim do Relatório"}' arquivo.txt - Gera um relatório formatado com cabeçalhos e rodapés. * **Imprimir linhas únicas (sem duplicatas) com base em uma coluna:** - awk '!seen[$1]++' arquivo.txt - Imprime linhas únicas, removendo duplicatas com base na primeira coluna. * **Extrair valores numéricos e calcular estatísticas (mínimo, máximo, média):** - awk 'BEGIN {min=999999; max=0} {if($2 < min) min=$2; if($2 > max) max=$2; soma+=$2} END {print "Mínimo:", min, "Máximo:", max, "Média:", soma/NR}' arquivo.txt - Calcula o valor mínimo, máximo e a média de uma coluna numérica. * **Manipular arquivos grandes e exibir progresso:** - awk '{print $0; if(NR%1000 == 0) print "Processando registro:", NR}' arquivo.txt - Processa arquivos grandes e exibe uma mensagem a cada 1000 registros processados.