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 <address@hidden> 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
> ...
> acosta@clima: ~$ 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!
>
> ...
> acosta@clima: ~$ 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!
>
> ...
> acosta@clima: ~$ ./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: address@hidden
---------------------------------------------------------------------
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