shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] soma-com-awk!


From: Julio C. Neves
Subject: Re: [shell-script] soma-com-awk!
Date: Tue, 28 Nov 2006 14:27:15 -0200

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 <address@hidden>:
>
>   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 <address@hidden<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
> > ...
> > 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!
> >
> >
>
> [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]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]