Fala Roberto, se soubermos previamente a qtd de colunas (e passando esta qtd como parâmetro), creio que para fazer o pretendido sem usar awk e sed, o melhor seria:
for ((i=1; i<=$1; i++)); { echo Soma da coluna $i = $(cut -f$i -d" " num | paste -sd+ | bc); } Que tb é um one-liner. Para somar linha, o melhor é tr ' ' + < num | bc Abração, Julio :wq 2006/11/28, Roberto Alves <[EMAIL PROTECTED]>: > > 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]<ricardo.acosta%40gmail.com>> > 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] > > > -- Abraços, Julio http://www.julioneves.com - Um livro sobre Bash completo e on-line :wq [As partes desta mensagem que não continham texto foram removidas]