Tag Archives: awk

AWK – Como usar uma variável shell

Para usar uma variável shell numa linha de comando do AWK, há 2 maneiras de se fazer isso.

Uma delas é usar aspas como no exemplo abaixo usando a variável shell count:

awk "/ $count/ " ' { print $1 }'

A outra é atribuir o valor da variável à  uma variável do próprio awk através da opção -v. Por exemplo, usando a variável shell count e a variável awk co:

awk -v co="$count" '{if ($1 == co) print $2 }'`

Referência:

AWK – Exemplo de uso com if

No exemplo abaixo, usarei o awk para avaliar o valor de uma coluna de dados e caso tenha o valor que eu desejo, imprimirei na tela os campos de meu interesse.

No exemplo abaixo quero avaliar se a data de um arquivo é 2006 e então exibir na tela a data e o nome do arquivo:

Saida do comando “ls -l”

# ls -l
-rw-r-----   1 userfoo   groupfoo  68578 Dec 29 2006  file_foo1.txt
-rw-r-----   1 userfoo   groupfoo  84609 Dec 29 2006  file_foo2.txt
-rw-r-----   1 userfoo   groupfoo  44587 Dec 29 2006  file_foo3.txt

Usando o awk:

# ls -l | awk  '{if ($8 == "2006") print $8 "  " $9}'

2006  file_foo1.txt
2006  file_foo2.txt
2006  file_foo3.txt

 

Referência:

Mais informações sobre o uso do awk: http://www.grymoire.com/Unix/Awk.html

Uso interessante do awk РOp̤̣o system

O awk é uma ferramenta muito poderosa e tenho consciência que não uso 1/1000 do que ela oferece.

Descobri um uso interessante da ferramenta, que é a utilização da opção system que já premite executar diretamente o comando utilizando o campo selecionado.

Ex:

O comando lsvgfs lista os filesystems do VG:

# lsvgfs rootvg
/
/usr
/var
/tmp
/home
/opt

Utilizando o awk com a opção system, podemos por exemplo, desmontar os filesystems chamando o comando umount dentro do awk, fazendo tudo numa única linha de comando:

# lsvgfs rootvg | awk '{system("umount "$1)}'

 

Referência

Para saber mais sobre awk:

  1. http://www.gnu.org/software/gawk/
  2. http://en.wikipedia.org/wiki/AWK_%28programming_language%29