Comando awk - Linux
O comando awk
awk
awk '/pattern/{action}' file
Primeiramente, ao comando awk
pattern
awk
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
Por exemplo, suponha que no diretório pessoal do usuário exista o arquivo users.txt
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
awk
-F
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
print
awk
$3
$0
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
: 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