palestra sobre awk [giran siege]

Post on 18-Jan-2015

2.442 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Palestra no Giran Siege sobre a linguagem de programação AWK para processamento de textos.

TRANSCRIPT

Almir 'm3nd3s'@m3nd3sm3nd3s@gmail.comhttp://www.almirmendes.com/

http://www.flickr.com/photos/atomicshed/2405111237/

awk

O que é o AWK?

AWK é uma linguagem de programação

para processamento de dados baseados em texto

$ man awk

Quando usar

http://www.flickr.com/photos/nuagedenuit/155699074/

Quando temos um conteúdo em formato texto particularmente

separado por delimitador

Quando um comando ou uma sequência Quando um comando ou uma sequência de comandos do shell (cut, grep, etc.) de comandos do shell (cut, grep, etc.)

não “parecem” suficientes para obter o não “parecem” suficientes para obter o resultado desejadoresultado desejado

http://www.flickr.com/photos/anotherjesse/151464940/

Quando utilizar linguagens como Quando utilizar linguagens como Java, C, Pascal, etc., parece Java, C, Pascal, etc., parece

“apelação”“apelação”

http://www.flickr.com/photos/linssen/5226407901/

Quando os dados “tem cara de AWK”

awk [pattern] { action }

awk { print $0 } /etc/passwd

cat /etc/passwd | awk { print $0 }

Os $x são os campos

O $0 é toda linha

O NF é..... ?

Delimitador default é o espaço

Mas você pode trocar!Basta usar o -F

Isto não me parece uma linguagem de programação?!

¬¬'

Controle de fluxo

if, while, do while, for, for in, continue, break

echo "10:34" | awk -F: '{ if($2<30) printf("%d:00",$1)

else printf("%d:30",$1)}'

Tem suporte a Regex?

expr ~ /er/

expr !~ /er/

date | awk '$1 ~ /^Ter/

{ print "Siege Day - " $0 }'

As expressões são As expressões são similaressimilares ao da ao da

linguagem Clinguagem C

http://www.flickr.com/photos/mrbill/2482009942/

Assignment = += -= *= /= %= ^=conditional ? :logical or ||logical and &&array membership inmatching ~ !~relational < > <= >= == !=concatenation (no explicit operator)add ops + -mul ops * / %unary + -logical not !exponentiation ^inc and dec ++ -- (both post and pre)field $

Variáveis pré-definidas

FILENAMENFNR

OFSORS

Funções internas de Funções internas de stringstring

http://www.flickr.com/photos/61417318@N00/4908148942/

Você também pode definir funções!

function csplit(s, A, n, i) { n = length(s) for( i = 1 ; i <= n ; i++ )A[i] = substr(s, i, 1) return n}

Kramba.. isso na linha de Kramba.. isso na linha de comando é osso!comando é osso!

http://www.flickr.com/photos/bittersweet_memories/4388392704/

awk -f prog.awk arquivo

Exemplos!!!!!!!!!!!!!O__o

Emulando o cat:

{ print }

Emulando o wc:

{ chars += length($0) + 1; words += NF }

END { print NR, words, chars }

Referências

$ man awkhttp://pt.wikipedia.org/wiki/Awk

google.com

Almir 'm3nd3s'@m3nd3s

m3nd3s@gmail.comhttp://www.almirmendes.net/

top related