Comando awk no Linux (processa dados) [Guia Básico]

O comando awk no Linux é uma poderosa ferramenta, que permite processar textos e fazer alterações em arquivos. Ele pode interpretar pequenos scripts para processar algum arquivo ou texto.

Existem outras variantes do AWK, tais como: BWK, GAWK e MAWK, que são implementações de diferentes desenvolvedores com algumas melhorias.

O awk pode receber comandos diretamente como parâmetros, ou através de um arquivo, utilizando-se a opção “-f’ seguido do nome do arquivo que contém os comandos.

Exemplo:

Dado um arquivo com um texto separado por espaços, o comando “print” servirá para exibir algo na tela. As variáveis $0, $1, $2, $3 e $4 pode imprimir todo o conteúdo ($0), ou cada coluna do texto:

Para imprimir todo o conteúdo do arquivo:

$ awk '{print $0}' arquivo 
Leia Organa General Resistência
Luke Skywalker Jedi Resistência
Darth Vader Sith Império
Obi-Wan Kenobi Jedi Resistência

Para imprimir somente a primeira coluna:

$ awk '{print $1}' arquivo 
Leia
Luke
Darth
Obi-Wan

Para imprimir a segunda coluna:

$ awk '{print $2}' arquivo 
Organa
Skywalker
Vader
Kenobi

É possível também brincar com o texto:

$ awk '{print $1 " " $2 " é um " $3 " da "$4}' arquivo 
Leia Organa é um General da Resistência
Luke Skywalker é um Jedi da Resistência
Darth Vader é um Sith da Império
Obi-Wan Kenobi é um Jedi da Resistência

Para listar somente os logins dos usuários no arquivo /etc/passwd, pode-se usar a opção “-F”, indicando o delimitador:

$ awk -F':' '{ print $1 }' /etc/passwd
root
bin
daemon
adm

O awk pode também ser usado para transformar um arquivo texto ou CSV, para comandos SQL:

$ awk '{print "insert into usuario (nome,sobrenome,cargo,departamento) values (\"" $1 "\",\"" $2 "\",\"" $3 "\",\"" $4 "\");" }' arquivo
insert into usuario (nome,sobrenome,cargo,departamento) values ("Leia","Organa","General","Resistência");
insert into usuario (nome,sobrenome,cargo,departamento) values ("Luke","Skywalker","Jedi","Resistência");
insert into usuario (nome,sobrenome,cargo,departamento) values ("Darth","Vader","Sith","Império");
insert into usuario (nome,sobrenome,cargo,departamento) values ("Obi-Wan","Kenobi","Jedi","Resistência");

Único cuidado que se deve ter é referenciar as aspas que compõe o comando SQL com a contra-barra “\“, para que sejam interpretadas como texto e não como aspas.

O awk aceita as diretivas iffor e while como na linguagem C, e também operadores matemáticos e muitas outras coisas. Enfim, é uma ferramenta completa para transformar arquivos.

Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.

Gostou? Compartilhe