São jose do rio preto palestra lmp AtualidadesdoDireito Palestra AliceBianchini
Palestra sobre AWK [Giran Siege]
-
Upload
almir-m3nd3s -
Category
Technology
-
view
2.442 -
download
0
description
Transcript of Palestra sobre AWK [Giran Siege]
![Page 1: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/1.jpg)
Almir 'm3nd3s'@[email protected]://www.almirmendes.com/
http://www.flickr.com/photos/atomicshed/2405111237/
awk
![Page 2: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/2.jpg)
O que é o AWK?
![Page 3: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/3.jpg)
AWK é uma linguagem de programação
para processamento de dados baseados em texto
![Page 4: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/4.jpg)
O que significa AWK?
Alfred V. Aho, Peter J. Weinberger Brian W. Kernighan
![Page 5: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/5.jpg)
$ man awk
![Page 6: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/6.jpg)
Quando usar
http://www.flickr.com/photos/nuagedenuit/155699074/
![Page 7: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/7.jpg)
Quando temos um conteúdo em formato texto particularmente
separado por delimitador
![Page 8: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/8.jpg)
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/
![Page 9: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/9.jpg)
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/
![Page 10: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/10.jpg)
Quando os dados “tem cara de AWK”
![Page 11: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/11.jpg)
awk [pattern] { action }
![Page 12: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/12.jpg)
awk { print $0 } /etc/passwd
cat /etc/passwd | awk { print $0 }
![Page 13: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/13.jpg)
Os $x são os campos
O $0 é toda linha
O NF é..... ?
![Page 14: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/14.jpg)
Delimitador default é o espaço
Mas você pode trocar!Basta usar o -F
![Page 15: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/15.jpg)
Isto não me parece uma linguagem de programação?!
¬¬'
![Page 16: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/16.jpg)
Controle de fluxo
if, while, do while, for, for in, continue, break
![Page 17: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/17.jpg)
echo "10:34" | awk -F: '{ if($2<30) printf("%d:00",$1)
else printf("%d:30",$1)}'
![Page 18: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/18.jpg)
Tem suporte a Regex?
expr ~ /er/
expr !~ /er/
![Page 19: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/19.jpg)
date | awk '$1 ~ /^Ter/
{ print "Siege Day - " $0 }'
![Page 20: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/20.jpg)
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/
![Page 21: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/21.jpg)
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 $
![Page 22: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/22.jpg)
Variáveis pré-definidas
FILENAMENFNR
OFSORS
![Page 23: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/23.jpg)
Funções internas de Funções internas de stringstring
http://www.flickr.com/photos/61417318@N00/4908148942/
![Page 24: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/24.jpg)
Você também pode definir funções!
![Page 25: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/25.jpg)
function csplit(s, A, n, i) { n = length(s) for( i = 1 ; i <= n ; i++ )A[i] = substr(s, i, 1) return n}
![Page 26: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/26.jpg)
Kramba.. isso na linha de Kramba.. isso na linha de comando é osso!comando é osso!
http://www.flickr.com/photos/bittersweet_memories/4388392704/
![Page 27: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/27.jpg)
awk -f prog.awk arquivo
![Page 28: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/28.jpg)
Exemplos!!!!!!!!!!!!!O__o
![Page 29: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/29.jpg)
Emulando o cat:
{ print }
![Page 30: Palestra sobre AWK [Giran Siege]](https://reader034.fdocumentos.tips/reader034/viewer/2022051514/54bae7c24a795905668b45b0/html5/thumbnails/30.jpg)
Emulando o wc:
{ chars += length($0) + 1; words += NF }
END { print NR, words, chars }