Valeu a dica!
funcionou perfeitamente!

[]s
acosta

2006/11/27, edjunior <[EMAIL PROTECTED]>:
> 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]> 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]> 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]
> > ---------------------------------------------------------------------
> > 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
> >
> >
> >
>
>
> ---------------------------------------------------------------------
> 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]
> ---------------------------------------------------------------------
> 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
>
>
>


-- 
__________________________
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!

Responder a