Atualizado: 24/10/2024

Comando awk - Linux

O comando awk é uma poderosa ferramenta para trabalhar com arquivos de texto, oferecendo diversas funcionalidades. O comando awk possui o seguinte formato:

awk '/pattern/{action}' file

Primeiramente, ao comando awk é passado o parâmetro pattern (padrão), que é uma expressão regular que o texto deve corresponder. Normalmente, os padrões são delimitados por barras. Em seguida, vem o parâmetro action, que define as ações a serem realizadas sobre as correspondências encontradas. As ações são delimitadas por chaves. Como awk trabalha com expressões regulares, é aconselhável colocar o padrão entre aspas simples para que o shell não os interprete incorretamente.

Por fim, o comando recebe o arquivo onde serão buscadas as correspondências.

Se o padrão não for especificado, a ação será executada em cada linha do arquivo. Se a ação não for especificada, awk simplesmente exibirá as linhas que correspondem ao padrão.

Por exemplo, suponha que no diretório pessoal do usuário exista o arquivo users.txt com o seguinte conteúdo:

Tom:39:Microsoft
Bob:43:Google
Sam:28:Jetbrains
Alice:34:Microsoft
Kate:25:Google
Tim:23:-
Tomas:31:Apple

Cada linha contém dados de um usuário - nome, idade e empresa - separados por dois-pontos. Ou seja, cada linha tem o formato nome:idade:empresa.

Suponha que queremos obter todas as linhas onde o nome do usuário é "Tom":

programicio@Programicio:~$ awk '/Tom/' users.txt
Tom:39:Microsoft
Tomas:31:Apple

A utilidade awk oferece várias funcionalidades interessantes, como a possibilidade de trabalhar com arquivos em estrutura tabular, como o nosso arquivo. Por padrão, awk utiliza espaço como delimitador de campo. No entanto, em nosso arquivo, o delimitador é o dois-pontos. Com a opção -F, podemos definir o símbolo que será usado como delimitador.

Por exemplo, para exibir apenas a empresa onde trabalham os usuários com o nome "Tom":

programicio@Programicio:~$ awk -F : '/Tom/{print $3}' users.txt
Microsoft
Apple

Aqui, a opção -F define o delimitador como dois-pontos. Além disso, adicionamos a ação print, uma função embutida do awk, que imprime o valor passado. Neste caso, passamos o valor $3, que representa o terceiro campo. Em nosso caso, o primeiro campo é o nome, o segundo é a idade e o terceiro é a empresa. O valor especial $0 representa a linha inteira.

Se quisermos exibir a empresa de todos os usuários, podemos omitir pattern (o padrão):

programicio@Programicio:~$ awk -F : '{print $3}' users.txt
Microsoft
Google
Jetbrains
Microsoft
Google
-
Apple

Como awk pode se referir a campos específicos, também podemos comparar campos entre si. Para isso, estão disponíveis os seguintes operadores:

  • ==: Igual (procura campo com o mesmo valor)

  • !=: Diferente

  • <: Menor que

  • <=: Menor ou igual

  • >: Maior que

  • >=: Maior ou igual

Com esses operadores, é possível realizar algumas operações com arquivos de texto. Por exemplo, para exibir os usuários com idade maior que 30:

programicio@Programicio:~$ awk -F : '$2 > 30 {print $1}' users.txt
Tom
Bob
Alice
Tomas
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com