Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Daniel Carneiro AWK
Executando o awk <ul><li>awk  ' programa ' arq1 arq2 …
awk   -f   programa  arq1 arq2 …
Obs: </li><ul><li>Se for omitido o(s) arquivo(s) de entrada, será assumido o  stdin </li></ul></ul>
Executando o awk <ul><li>Como arquivo executável </li></ul>#!/bin/awk -f BEGIN   {  print “Don't panic  }
Estrutura # comentario BEGIN  { comandos; } [seletor] { comandos; } [seletor] { comandos; } { comandos; } [seletor] END  {...
Estrutura <ul><li>O seletor pode ser: </li><ul><li>Uma regular expression no formato:  /regex/
Um intervalo no formato:  a, b
Uma condição. Ex.:  length($0) > 80 </li><ul><li>awk  ' length($0) > 80 ' dados </li></ul></ul></ul>
Estrutura <ul><li>Além destes também podem ser definidas funçoes, no formato: </li><ul><li>function   f ( a, b, c ) { coma...
Estruturas de controle <ul><li>if  ( condicao ) comandos; [  else  comandos; ]
while  ( condicao ) comandos;
do  comandos;  while  ( condicao );
for ( expr1; expr2; exp3 ) comandos;
break ;
continue ;
exit ; </li></ul>
Upcoming SlideShare
Loading in …5
×

Awk

2,017 views

Published on

Apresentação sobre a ferramenta AWKvrealizada na Bluesoft

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

Published in: Sports
  • Be the first to comment

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

×