Awk é uma linguagem de procura de padrões e processamento. Sua implementação no projeto GNU é o gawk. Uma referência completa pode ser encontrada em ``The AWK Programming Language'', de Aho, Kernighan, e Weinberger. A forma genérica do comando é:
$ gawk [ opções ] -f arquivo-programa [-] arquivo
ou
$ gawk [ opções ] -file arquivo-programa [-] arquivo
As opções podem ser em formato "POSIX" de letras precedidas por - ou em formato longo "GNU" quando precedidas por - - . Veja man awk para detalhes das opções.
Um programa awk consiste de uma seqüência do tipo padrão-ação. A seguir listamos exemplos extremamente simples do uso do awk na linha de comando. Não esqueça de proteger o conjunto padrão-açãodo shell com aspas simples (' `). Construa o arquivo pinguim com o seguinte conteúdo:
1 0 1 2 3 4 5 0 6 7 8 9 10 11
Para imprimir na tela os elementos da primeira coluna do arquivo maiores que 4 digitamos:
$ awk '{if($1>4 )print $1}' pinguim 5 6 8 10
Para imprimir na tela os elementos da segunda coluna do arquivo quando os elementos da primeira são maiores que 4 digitamos:
$ awk '{if($1>4 )print $2}' pinguim 0 7 9 11
Nestes dois exemplos está implícito que o separador dos campos das variáveis $1 e $2 é o espaço. Se quizermos explorar outros separadores (e.g. o ``:'' do arquivo /etc/passwd) usamos a opção -F. Suponha que nosso arquivo pinguim seja agora:
1:0:4 1:2:23 3:4:34 5:0:3 6:7:8 8:9:22 10:11:1
Se agora voce quiser selecionar os elementos da segunda coluna quando a terceira for maior que 20 digitará:
$ awk -F : '{if($3>20) print $2}' toto 2 4 9Se você quer saber quais os usuários do sistema tem UID maior que 20:
$ awk -F : '{if($3>20) print $1}' /etc/passwd nobody alice beto leon lucas naty sandraOu ao contrário, suponha que você queira saber o UID de um dado usuário. Neste caso você tem de usar aspas para indicar uma string. Vamos procurar o usuário nobody em /etc/passwd:
$ awk -F : '{if($1==''noboby'') print $3}' /etc/passwd 99
leon 2008-08-19