ola. Estranho, na versão aqui em casa funcionou, talvez seja a versão do gawk.
Em todo o caso esta forma deve ser mais eficiente do que fazer um if a cada iteração: function sizeof(a) { c=0; for(e in a) c++; return(c) } Outra forma é deixar que o comando sort 'arrume' a saida, mas obrigado pelo aviso! On 11/27/06, edjunior <[EMAIL PROTECTED]> wrote: > > hey, > > tiago, achei seu script bem interessante, porém encontrei um pequeno > problema quando tentei executá-lo. Não tenho certeza disso, mas creio > que a função de 'length' não funciona corretamente pra array, > retornando um determinado erro ("... fatal: attempt to use array > `soma' in a scalar context"). > Apanhei um pouco e achei uma solução semelhante, substituindo a tal > função: > > awk ' > BEGIN { > num_colunas = 0 > } > > { > split($0,dados) > for(i=1; i<=NF; i++) { > if ( NF > num_colunas ) > num_colunas = NF > soma[i] += dados[i] > } > } > > END { > for(i=1; i <= num_colunas; i++) { > printf "soma[%d]=%s ", i, soma[i] } # aqui vamos imprimir bonitinho :) > print "" > }' dados.txt > > (Legal que deu pra tirar um pouco da ferrugem do awk por aqui :p ) > hasta! > > jr. > > > On 11/27/06, Tiago Barcellos Peczenyj <[EMAIL > PROTECTED]<tiago.peczenyj%40gmail.com>> > wrote: > > Sim, a melhor opção é fazer, em awk, usando vetores. Em awk, uma > > variavel criada tem valor 0. Matrizes são criadas dinamicamente, e vc > > pode adicionar novas posições em qq momento. > > > > ex: > > a[1] = 10 > > a[134723984] = 90 > > a["xxx"] = -1 > > > > Veja só como ficaria > > awk '{ > > split($0,dados) > > for(i in dados){ > > soma[i]+= dados[i] > > } > > } > > END{for(i=1;i<=length(soma);i++) { > > printf "%s ",soma[i]} # aqui vamos imprimir bonitinho :) > > }' dados.txt > > > > Abraços > > > > On 11/27/06, Ricardo Acosta <[EMAIL PROTECTED]<ricardo.acosta%40gmail.com>> > wrote: > > > > > > > > > > > > > > > > > > > > > Ola Camaradas, > > > bom dia! > > > > > > como fazer pra somar colunas com o awk. > > > sem ter q declarar coluna por coluna! > > > teria como fazer uma matriz indexada? > > > > > > vejam o exemplo > > > ... > > > [EMAIL PROTECTED]: ~$ cat dados.dat > > > COL1 COL2 COL3 COL4 > > > 0001 0011 0111 1111 > > > 0002 0012 0112 1112 > > > 0003 0013 0113 1113 > > > 0004 0014 0114 1114 > > > 0005 0015 0115 1115 > > > ... > > > > > > sei fazer desta forma, mas a medida que o numero de coluna aumenta. > > > torna-se inviavel! > > > pois trabalhos com arquivos em que o numero de colunas varia de > > > momento em momento. > > > imaginem este numero varinado entre 50 - 70 colunas! > > > > > > ... > > > [EMAIL PROTECTED]: ~$ cat soma.sh > > > #!/bin/bash > > > awk '{ sum1 += $1 > > > sum2 += $2 > > > sum3 += $3 > > > sum4 += $4 > > > } > > > END{print sum1, sum2, sum3, sum4} > > > ' dados.dat > > > ... > > > o resultado que obtenho está certo, mas alguem saberia sugerir outra > > > forma de fazer isso? > > > mesmo que nao seja com o AWK! > > > > > > ... > > > [EMAIL PROTECTED]: ~$ ./soma.sh > > > 15 65 565 5565 > > > ... > > > > > > []s > > > acosta > > > > > > -- > > > __________________________ > > > Ricardo Acosta > > > Laboratório de Clima e Biosfera > > > Depto. de Ciências Atmosféricas > > > Universidade de São Paulo > > > > > > Dê emoção à sua vida: > > > Faça pipocas com a panela aberta! > > > > > > > > > > > -- > > Tiago B Peczenyj > > Linux User #405772 > > > > # cd /pub > > # more beer > > > > > > ---------------------------------------------------------- > > Esta lista não admite a abordagem de outras liguagens de programação, > como perl, C etc. Quem insistir em não seguir esta regra será moderado sem > prévio aviso. > > ---------------------------------------------------------- > > Sair da lista: [EMAIL > > PROTECTED]<shell-script-unsubscribe%40yahoogrupos.com.br> > > ---------------------------------------------------------- > > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > > ---------------------------------------------------------- > > Servidor Newsgroup da lista: news.gmane.org > > Grupo: gmane.org.user-groups.programming.shell.brazil > > > > > > Links do Yahoo! Grupos > > > > > > > > > -- Tiago B Peczenyj Linux User #405772 # cd /pub # more beer [As partes desta mensagem que não continham texto foram removidas]