O AWK ? um filtro no qual possui uma linguagem pr?pria no qual o torna muito mais que um simple comando para filtragem de conte?do.
Neste tutorial irei exemplificar algumas das t?cnicas de filtragem assim como o significado de cada flag de comando.
Exemplo 1)
Imagine que voc? queira criar uma lista com todos os usu?rio ativos em seu sistema e voc? precisar? dos nomes dos usu?rio e os UID e GID respectivamente, para isso usaremos o comando AWK para filtrar os devidos campos:
cat /etc/passwd |awk -F: ‘{ print $1 “:” $3}’
No caso acima usamos o comando cat para lista o conte?do do arquivo /etc/passwd e redirecionando a sa?da para o comando AWK atrav? do caractere pipe.
-F: = onde -F: especifica que o caractere “:” ? servir? como caracter separador
‘{ print $1 “:” $3}’ = aqui estamos especificando que o comando “print” imprima os primeiros “$1” argumentos da sa?da padr?o, os “$3” terceiros e usando como separador de conte?do o caractere “:”.
Exemplo 2)
Neste segundo exemplo iremos filtrar a saida do comando ps -aef especificando qual processo cada usu?rio esta executando em nosso SO.
ps -aef | awk ‘{ print “Usuario: ” $1 ” PID: ” $2 ” processos: ” $8 }’
Neste exemplo usamos o AWK para filtrar a sa?da padr?o do comando ps -aef especificando para que ele imprima os campos 1,2 e 8 adicionando os coment?rios entre eles.
Exemplo 3)
Os par?metros “NF” e “NR” possuem algumas particularidades onde:
NF = possibilita sabermos quantos campos cada linha ser? classificada, veja o exemplo abaixo:
awk -F: ‘{ print NF}’ /etc/passwd |tail -n1
com o comando acima podemos descobrir que o arquivo /etc/passwd ser? classificado em 7 campos utilizando o caracter separador “:”
NR = par?metro usado para imprimir p n?mero da linha ou da sa?da, veja o exemplo:
ls | awk ‘{ print NR “: ” $0}’
aqui criamos uma listagem de diret?rio numerada usando o par?metro NR.
Exemplo 4)
Outra funcionalidade do AWK ? criar vari?veis de comando podendo acumular valores dos dados passados, no exemplo abaixo iremos calcular a quantidade de blocos que nosso disco r?gido possui:
df | awk ‘{ total = total + $2; print total}’
A variav?l total receber? o valor dela acumulado do segundo campo do comando “df” que corresponde a quantidade de blocos do disco.
Este s?o apenas alguns exemplos simples que este poderoso comando pode executar mais informa??es poderam ser encontrados com o comando man ou info.
Espero que tenham aproveitado,
at? a pr?xima