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

Responder a