Pesquisa de site

Comando awk do Linux


Nesta página

  1. O comando awk
  2. Sintaxe Básica
  3. Exemplos de awk
  4. Perguntas frequentes
  5. Conclusão

Dentre as inúmeras ferramentas de processamento de texto disponíveis no shell do Linux, o awk se destaca por seu poder e versatilidade. Originalmente desenvolvido na década de 1970 por Aho, Weinberger e Kernighan, awk é mais do que apenas um comando – é uma linguagem de programação completa projetada para processar e analisar arquivos de texto.

O comando awk

O awk opera em arquivos e streams como uma sequência de registros e campos. Por padrão, um registro é definido como uma linha e os campos são separados por espaços em branco, embora ambos possam ser redefinidos.

Sintaxe Básica

A sintaxe básica do awk é:

awk 'pattern {action}' file
  • Padrão: especifica quando a ação deve ser executada. Se omitido, a ação se aplica a todas as linhas.
  • Ação: Um conjunto de comandos executados quando o padrão é correspondido. As ações são colocadas entre chaves {}.

Exemplos de awk

Imprimir a primeira coluna de um arquivo

awk '{print $1}' file.txt

Este comando imprime o primeiro campo de cada registro (normalmente, a primeira palavra de cada linha) do arquivo.txt.

Soma e média de uma coluna

awk '{sum+=$2; count++} END {print "Sum =", sum; print "Average =", sum/count}' file.txt

Este comando calcula a soma e a média dos valores da segunda coluna do arquivo.txt.

Filtragem com base em uma condição

awk '$3 > 100' file.txt

Isso exibe linhas do arquivo.txt onde o terceiro campo é maior que 100.

Perguntas frequentes

Como altero o separador de campos no awk?

Use a opção -F seguida do separador desejado. Por exemplo, awk -F, '{print $2}' file.csv imprimirá o segundo campo de um arquivo CSV.

O awk consegue lidar com vários arquivos de uma vez?

Sim, o awk pode processar vários arquivos sequencialmente. Use awk '{print}' file1.txt file2.txt para processar file1.txt e file2.txt consecutivamente.

Como posso integrar o awk com variáveis do shell?

Você pode passar variáveis do shell para o awk usando a opção -v. Por exemplo, var="valor"; awk -v awkVar="$var" '{print awkVar}' file.txt imprimirá o valor da variável shell var para cada linha em file.txt.

É possível modificar um arquivo localmente usando o awk?

Não, o awk não oferece suporte direto à edição local como sed -i. No entanto, você pode conseguir isso redirecionando a saída do awk para um arquivo temporário e renomeando-o para o arquivo original.

O awk pode ser usado para processamento de texto complexo?

Absolutamente. Embora o awk seja simples para tarefas básicas, também é poderoso o suficiente para processamento de texto complexo. Ele oferece suporte a arrays, funções e expressões regulares, tornando-o adequado para diversas tarefas de manipulação de texto.

Conclusão

O comando awk é uma ferramenta versátil de processamento de texto de linha de comando para sistemas baseados em Unix. Seus recursos simples, mas robustos, tornam-no uma ferramenta indispensável para quem lida com arquivos de texto – desde análise de log até extração de dados. Ao dominar o awk, os usuários podem aproveitar todo o potencial da manipulação de texto no Linux.

Artigos relacionados: