Awk

1,893 views
1,819 views

Published on

Apresentação sobre a ferramenta AWKvrealizada na Bluesoft

Confira o video em http://www.vimeo.com/

Published in: Sports
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,893
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Awk

  1. 1. Daniel Carneiro AWK
  2. 2. Executando o awk <ul><li>awk ' programa ' arq1 arq2 …
  3. 3. awk -f programa arq1 arq2 …
  4. 4. Obs: </li><ul><li>Se for omitido o(s) arquivo(s) de entrada, será assumido o stdin </li></ul></ul>
  5. 5. Executando o awk <ul><li>Como arquivo executável </li></ul>#!/bin/awk -f BEGIN { print “Don't panic }
  6. 6. Estrutura # comentario BEGIN { comandos; } [seletor] { comandos; } [seletor] { comandos; } { comandos; } [seletor] END { comandos; }
  7. 7. Estrutura <ul><li>O seletor pode ser: </li><ul><li>Uma regular expression no formato: /regex/
  8. 8. Um intervalo no formato: a, b
  9. 9. Uma condição. Ex.: length($0) > 80 </li><ul><li>awk ' length($0) > 80 ' dados </li></ul></ul></ul>
  10. 10. Estrutura <ul><li>Além destes também podem ser definidas funçoes, no formato: </li><ul><li>function f ( a, b, c ) { comando; comando; } </li></ul></ul>
  11. 11. Estruturas de controle <ul><li>if ( condicao ) comandos; [ else comandos; ]
  12. 12. while ( condicao ) comandos;
  13. 13. do comandos; while ( condicao );
  14. 14. for ( expr1; expr2; exp3 ) comandos;
  15. 15. break ;
  16. 16. continue ;
  17. 17. exit ; </li></ul>
  18. 18. Arrays <ul><li>Arrays no awk são listas associativas (hashs)
  19. 19. Ex.: </li><ul><li>x [ “a” ] = 1
  20. 20. delete x[ “a” ] -> remove o item
  21. 21. delete x -> remove o array inteiro
  22. 22. if ( “a” in x ) print x[ “a” ] </li></ul></ul>
  23. 23. Variáveis especiais <ul><li>$0 – registro a ser processado
  24. 24. $1 … $9 – campos
  25. 25. RS – separador de registro
  26. 26. FS – separador de campo
  27. 27. FIELDWIDTHS – separadores de campos de tamanho fixo
  28. 28. NF – numero de campos no registro
  29. 29. NR – numero de registros processados </li></ul>
  30. 30. Funções <ul><li>String </li><ul><li>length([s]) -> retorna o tamanho de s
  31. 31. index(s, t) -> retorna a posição de t em s
  32. 32. substr(s, i [, n]) -> substring
  33. 33. tolower(s) / toupper(s)
  34. 34. gsub(r, s [, t]) -> busca usando a regex r no texto t , substituindo por s
  35. 35. gensub(r, s, h, [, t ]) -> busca usando a regex r no texto t , substituindo a ocorrência h pelo texto s, retornando o novo texto, sem alterar o original </li></ul></ul>
  36. 36. Funções <ul><li>Matemáticas </li><ul><li>sin(x), cos(x)
  37. 37. exp(x), log(x)
  38. 38. int(x) -> trunca inteiro
  39. 39. rand() -> gerador randomico </li></ul></ul>
  40. 40. Funções <ul><li>Funções de I/O </li><ul><li>getline -> obtém a próxima linha, seta $0, NF, NR e FNR
  41. 41. getline < arq -> obtém o próximo registro a partir de arq
  42. 42. getline var -> obtém o próximo registro e guardar em var
  43. 43. getline var < arq -> obtém o próximo registro a partir de arq e guarda em var </li></ul></ul>
  44. 44. Funções <ul><li>Funções de I/O: </li><ul><li>comando | getline [var] -> executa o comando, armazenando o resultado em $0 ou em var
  45. 45. next -> para o processamento atual a vai para o próximo registro
  46. 46. nextfile -> para o processamento atual e vai para o próximo arquivo </li></ul></ul>
  47. 47. Funções <ul><li>Funções de I/O: </li><ul><li>print -> imprime o registro atual
  48. 48. print expr -> imprime a expressão
  49. 49. print expr > arq -> imprime a expressão para o arquivo
  50. 50. printf formato, expr -> imprime a expressão, formatada por formato
  51. 51. printf formato, expr > arq -> imprime a expressão, formatada por formato em arq </li></ul></ul>
  52. 52. Exemplos <ul><li>Contar numero de linhas de um arquivo: </li><ul><li>awk ' END { print NR }' data
  53. 53. awk '{ counter += 1 } END { print counter }' data </li></ul><li>Imprimir as linhas pares de um arquivo: </li><ul><li>awk ' NR % 2 == 0' data </li></ul><li>Imprimir o segundo campo de um arquivo: </li><ul><li>awk '{ print $2 }' data </li></ul></ul>
  54. 54. Exemplos <ul><li>Imprimir a lista de usuarios do sistema: </li><ul><li>awk -F: '{ print $1 }' /etc/passwd | sort </li></ul><li>Imprimir o total de bytes de uma lista de arquivos: </li><ul><li>ls -l files | awk '{ x += $5 } END { print &quot;total bytes: &quot; x }' </li></ul></ul>
  55. 55. Obrigado

×