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