AWK na linha

agosto 18, 2007

AWK é um linguagem interpretada, sua principal vantagem e a simplicidade com que trata dados. Porém são poucas as pessoas que utilizam essa ferramenta em seu dia-a-dia, por essa razão passo algumas dicas interessantes para programas em 1 ou 2 linhas em seu shell.

awk ‘{ print $1 }’ /var/log/boot

O comando acima imprime a primeira coluna do conteúdo em /var/log/boot, ou seja, em um arquivo texto podemos considerar cada espaço uma separação, por exemplo:

$1 $2
texto1 texto2

Ou seja, a variável $ seguida de um número “guarda o conteúdo desta coluna”.

awk ‘ length($0) > 20 ‘ /var/log/boot

Este imprime as linhas do arquivo que contiverem mais de 20 caracteres

awk ‘END { print NR }’ /var/log/boot

Esse simplesmente conta o número de linhas de um arquivo

ER

O uso de expressões regulares no awk é passada dentro do //, comparando com cada registro no texto

awk ‘ /GNOME/ ‘ /var/log/boot

O comando acima imprime somente as linhas que contiverem o termo GNOME no arquivo /var/log/boot

Operadores de comparação para expressões regulares são :

~ ex: ~/ER/ retorna verdadeiro se corresponder a ER

!~ ex: !~/ER/ retorna falso se não corresponder a ER

awk ‘$7 ~ /GNOME/ ‘ /var/log/boot

Retorna as linhas onde na coluna 7 conter o termo GNOME

awk ‘$7 !~ /GNOME/ ‘ /var/log/boot

Retorna as linhas que não contém o termo GNOME

Controles

FOR
awk ‘BEGIN { for ( i = 0 ; i<=10; i++ ) print i } ‘

Simplesmente imprime os valores de i até 10

IF
awk ‘BEGIN { for ( i = 0 ; i<=10; i++ ) if ( i > 5 ) print i } ‘

Verifica se i é maior que 5 e imprime

IF/ELSE

awk ‘BEGIN { for ( i = 0 ; i<=10; i++ ) if ( i > 5 ) { print “Mairoes que 5 i } else { print “Não é maior que 5” } } ‘

Essa foi só uma ideia do que é possível fazer com o AWK, sugiro uma percorrida no manual, e brincar um pouco com essa linguagem que gosto tanto.

Anúncios

2 Respostas to “AWK na linha”

  1. Cristiano Says:

    Têm previsão , de ser lançado mais material, adorei esse, queria aprender ER emcima do awk !!! Valeu

  2. andrem Says:

    Opa Ccristiano, em breve vou colocar mais coisas sim …. e que ando meio sem tempo :(


Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: