Usando o comando AWK

  • Post author:
  • Post category:Sem categoria

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