Ricardo, eu tenho um script que usei um truque que o Julio nos ensinou mas é para arquivos onde o numero de colunas é fixo. Mas sei que voce pode mudar se quebrar um pouco a cabeça. É mais ou menos assim:
while : read COL1 COL2 COL3 do COLUNA1=$(( "$COLUNA1" + "$COL1" )) COLUNA2=$(( "$COLUNA2" + "$COL2" )) COLUNA3=$(( "$COLUNA3" + "$COL3" )) done < /arquivo/de/entrada echo "Coluna1 tem $COLUNA1 no seu total" echo "Coluna5 tem $COLUNA2 no seu total" echo "O total de bytes é: $COLUNA3 em kbytes" Nesse caso o while usa o separador padrao para ler as colunas e você já as joga nas variaveis. Na verdade eu tinha um arquivo bagunçado onde separei só as colunas que queria e tratei no final uma coisa bem mais simples de se entender, usando cut, tr, e outras coisas mas a idéia é essa. abraços, Roberto Alves 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! > > [As partes desta mensagem que não continham texto foram removidas]