10 exemplos do comando awk com expressões regulares

10 exemplos do comando awk com expressões regulares no Linux

O AWK (em maiúsculas) é uma linguagem de script de domínio específico, projetada principalmente para realizar processamento de texto e busca de padrões, sendo muito empregada na extração de dados de arquivos e geração de relatórios.

Criada no Bell Labs nos anos 1970, essa linguagem oferece suporta ao tipo de dados string, além de operar com arrays associativos e expressões regulares, como os exemplos simples que veremos neste artigo.

O nome da linguagem, AWK, é derivado dos sobrenomes dos autores da linguagem em si, que são Alfred Aho, Peter Weinberger e Brian Kernighan.

No Linux/UNIX temos a ferramenta awk (escrita cm caracteres minúsculos), que permite executar scripts escritos na linguagem de programação AWK, e é isso que utilizaremos aqui.

O comando awk

O comando awk é uma ferramenta de processamento de texto no Linux que permite manipular e analisar dados de forma eficiente. Combinado com expressões regulares, o awk se torna ainda mais útil, permitindo extrair, filtrar e processar dados com bastante precisão.

Neste tutorial, vou mostrar 10 exemplos de uso da ferramenta awk com expressões regulares simples para resolver problemas comuns encontrados no dia a dia de administradores de sistemas e desenvolvedores que usam Linux.

Para demonstrar o uso da ferramenta, vamos precisar de um arquivo de texto cujo conteúdo será processado pelo awk. Vamos criar um arquivo de nome “logs.txt” em um diretório qualquer do sistema, como sua pasta de documentos, com o conteúdo a seguir (use seu editor de textos preferido; eu usei o editor nano):

Conteúdo do arquivo logs.txt

Arquivo de Log do dia 04/09/2024
Início de instalação de aplicação via terminal 08:21 
Fim de instalação de aplicação 08:26
Aplicação instalada com sucesso 08:26
Erro ao abrir a aplicação 08:27
Erro ao iniciar instância de servidor 08:28
Envio de telemetria de dados ao servidor remoto 08:30
Enviando telemetria de dados para endereço server@200.201.12.66 08:30
Relatório de telemetria de dados finalizado 08:31

Após criar e salvar este arquivo, vamos aos exemplos.

1. Filtrar Linhas que Contêm uma Palavra Específica

Encontrar todas as linhas em um arquivo que contêm uma palavra específica:

awk '/palavra/' arquivo.txt

Exemplo:

$ awk '/Erro/' logs.txt

Este comando retornará todas as linhas no arquivo logs.txt que contêm a palavra “Erro”. Note que o comando é case-sensitive, ou seja, diferencia maiúsculas de minúsculas. Sendo assim, se for pesquisada a palavra erro, com e minúsculo, nada será retornado neste caso.

Uma opção para contornar esse problema é pesquisar pelas duas versões da palavra, iniciando com maiúscula e com minúscula, com segue:

$ awk '/[eE]rro/' logs.txt

A opção mais adequada nesse caso, porém, é usar a opção IGNORECASE do próprio awk, que irá ignorar maiúsculas e minúsculas, como segue:

$ awk 'BEGIN{IGNORECASE=1} /erro/' logs.txt

2. Filtrar Linhas que Não Contêm uma Palavra Específica

Para NÃO mostrar as linhas que contêm uma determinada palavra, utilize a seguinte estrutura:

awk '!/palavra/' arquivo.txt

Exemplo:

$ awk '!/Erro/' logs.txt

Aqui, todas as linhas que não contêm a palavra “erro” serão exibidas.

3. Filtrar Linhas que Começam com uma Palavra Específica

Se precisar encontrar linhas que começam com uma palavra específica, utilize o símbolo ‘^’ antes da palavra:

awk '/^palavra/' arquivo.txt

Exemplo:

$ awk '/^Início/' logs.txt

Este comando retorna todas as linhas que começam com a palavra inteira “Início” no arquivo “logs.txt”.

4. Filtrar Linhas que Terminam com uma Palavra Específica

Para encontrar linhas que terminam com uma palavra específica, use o símbolo ‘$’ após a palavra:

awk '/palavra$/' arquivo.txt

Exemplo:

$ awk '/08:30$/' logs.txt

Este comando retorna todas as linhas no arquivo logs.txt que terminam com a string “08:30” – ou seja, neste caso as linhas do arquivo de log referentes a esse horário.

5. Filtrar Linhas com Padrões de Dígitos Específicos

Se você deseja encontrar linhas que contêm uma sequência específica de dígitos, use `\d` ou `[0-9]`:

awk '/[0-9]{4}/' arquivo.txt

Exemplo:

$ awk '/[0-9]{4}/' logs.txt

Este comando encontra todas as linhas que contêm uma sequência de quatro dígitos (como um ano) no arquivo de log.

6. Filtrar Linhas que Contêm um Intervalo de Caracteres

Para encontrar linhas que contêm caracteres dentro de um intervalo específico, podemos usar o seguinte comando:

awk '/[a-z]/' arquivo.txt

Exemplo:

$ awk '/[A-E]/' logs.txt

Este comando filtra as linhas que contêm qualquer letra maiúscula no intervalo de A a E no arquivo logs.txt. No caso, serão mostradas as linhas que iniciam com A e com E maiúsculos, pois são as únicas letras dentro desse intervalo que existem no arquivo. Lembre-se que o awk é case-sensitive, então não serão retornadas linhas com as letras a, b, c, d e e minúsculas, a não ser que seja usada a opção IGNORECASE.

7. Filtrar Linhas com Palavras Iniciadas com Letras Específicas

Se desejamos filtrar linhas onde as palavras começam com uma determinada letra ou conjunto de letras, usamos:

awk '/\b[aA]/' arquivo.txt

Exemplo:

$ awk '/^[FR]/' logs.txt

Este comando retornará todas as linhas no arquivo logs.txt onde alguma palavra começa com uma das letras “F” ou “R”.

8. Filtrar Linhas que iniciem e terminem com strings específicas

Retornar as linhas que começam com a palavra “Erro” ou “erro” e terminam com a string “08:27”:

$ awk 'BEGIN{IGNORECASE=1} /^erro/ && /08:27$/' logs.txt

Neste exemplo usamos o operador lógico && (AND) para retornar apenas as linhas que atendam a ambos os critérios passados para o awk.

9. Filtrar Linhas com Palavras que Contêm Caracteres Especiais

Para filtrar linhas que contêm caracteres especiais como “@”, use a seguinte expressão regular:

awk '/[@]/' arquivo.txt

Exemplo:

$ awk '/[@]/' logs.txt

Este comando retorna todas as linhas no arquivo logs.txt que contêm o caractere “@” em qualquer posição.

10. Contar o Número de Linhas que Correspondem a um Padrão

Finalmente, se quisermos contar o número de linhas que correspondem a um padrão, usamos:

awk '/palavra/ {count++} END {print count}' arquivo.txt

Exemplo:

$ awk '/Erro/ {count++} END {print count}' logs.txt

Este comando conta quantas linhas contêm a palavra “erro” no arquivo logs.txt e imprime o total.

Conclusão

O comando awk é uma ferramenta incrivelmente poderosa para manipulação de texto em sistemas Linux, especialmente quando combinado com expressões regulares. Este tutorial mostrei 10 exemplos que demonstram como awk pode ser utilizado para filtrar e processar dados de maneira eficiente. 

É isso aí! Até a próxima!

Perguntas e Respostas

O que é a linguagem AWK?

AWK é uma linguagem de programação criada em 1977 pelos cientistas Alfred Aho, Peter J. Weinberger e Brian Kernighan no laboratório Bell Labs, voltada para o processamento de texto e análise de dados em arquivos ou fluxos de entrada.

Ela permite manipular e extrair informações textuais com base em padrões e campos predefinidos.

O que é o comando awk no Linux?

O comando awk no Linux é uma ferramenta de linha de comando usada para processar e analisar texto, permitindo filtrar, formatar e transformar dados de arquivos, utilizando padrões de busca e regras definidas pelo usuário, usando linhas escritas na linguagem AWK.

O que são Expressões Regulares?

Expressões regulares são sequências de caracteres que formam um padrão de busca utilizado para encontrar, manipular ou validar partes específicas de textos, sendo amplamente usadas em linguagens de programação e ferramentas de processamento de texto.

O que é um arquivo de Log?

Um arquivo de log é um registro cronológico de eventos ou atividades de um sistema ou aplicação, geralmente utilizado para monitoramento, depuração ou análise de desempenho e erros.

Sobre Fábio dos Reis (1207 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

Escreva um comentário

Seu e-mail não será divulgado


*