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

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

Re: [shell-script] Somando uma lista


From: Arthur Renato Mello
Subject: Re: [shell-script] Somando uma lista
Date: Tue, 18 Dec 2007 11:26:43 -0200

Alan,

basicamente eh uma alteracao do codigo que o Flavio mandou, para ao
inves de contar, somar os valores.

Primeiro passamos a saida do comando ls -la para ser tratada pelo awk.

Em awk, normalmente temos um bloco do tipo CONDICAO { ACAO }.
O awk irá ler a entrada, linha por linha, e para cada linha da entrada
irá testar as condições, realizando as ações correspondentes.

No exemplo:
$ ls -la | awk '{print $5}'

4096
4096
493
582

nao temos nenhuma condicao, entao o bloco "print $5" sera executado
para todas as linhas.

Como nao alteramos o delimitador padrao do awk, ele esta usando o
espacamento, por isso a variavel $5 possui o conteudo da quinta coluna
da entrada, separada por espacamento, ($1 da primeira, $2 da
segunda...).

No comando usamos outros 2 blocos (voce pode ter quantos blocos
desejar) com 2 condicoes especiais, BEGIN (executada antes do awk
comecar a interpretar a entrada) e END (executada após o processamento
do último registro).

Na acao do BEGIN, iniciamos uma variavel total com zero.
Na acao do bloco principal incrementamos essa variavel com o valor de
$5 (e ainda imprimimos $5).
E, finalmente, na acao do bloco END, imprimimos a string "Total:" e o
valor final da variavel total.

[]s
Arthur

On Dec 18, 2007 10:59 AM, Alan Diones <address@hidden> wrote:
>
>
>
>
>
>
> Arthur, gostei da idéia, me explica passo a passo como funciona, tem
>  jeito?
>
>  ls -la | awk 'BEGIN{total=0}; {total+=$5; print $5}; END{print "Total:",
>  total}'
>
>  Alan Diones
>  Em Ter, 2007-12-18 às 10:52 -0200, Arthur Renato Mello escreveu:
>
>  > Leonardo,
>  >
>  > ls -la | awk 'BEGIN{total=0}; {total+=$5; print $5}; END{print
>  > "Total:", total}'
>  >
>  > []s
>  > Arthur
>  >
>  > On Dec 18, 2007 10:42 AM, Leonardo D'Angelo Goncalves
>  > <address@hidden> wrote:
>  > >
>  > >
>  > >
>  > >
>  > >
>  > >
>  > > tá mais eu quero somar e naum contar...hehe
>  > >
>  > > Em 18/12/07, Flavio Junior <address@hidden> escreveu:
>  > >
>  > > >
>  > > > Com o proprio awk:
>  > > >
>  > > > $ ls -la | awk 'BEGIN{count=0}; {count++; print $5} END{ print
>  > "Total:",
>  > > > count}'
>  > > >
>  > > > mas pode fazer isso até com o wc -l mesmo..
>  > > >
>  > > > --
>  > > >
>  > > > Flávio do Carmo Júnior
>  > > >
>  > > > On Dec 18, 2007 10:32 AM, Leonardo D'Angelo Goncalves
>  > > >
>  > > > <leonardodg@xxxxxxxxxxx> wrote:
>  > > > >
>  > > > >
>  > > > >
>  > > > >
>  > > > >
>  > > > >
>  > > > > Bom dia
>  > > > >
>  > > > > Gostaria de saber como somar a lista gerada por este comando,
>  > pois
>  > > > > tenho varias listas e gostaria de ter um total:
>  > > > >
>  > > > > ls -la | awk '{print $5}' > lista.txt
>  > > > >
>  > > > > Obrigado
>  > > > >
>  > > >
>  > > >
>  > > >
>  > >
>  > > [As partes desta mensagem que não continham texto foram removidas]
>  > >
>  > >
>  >
>  >
>  >
>  >
>
>  


reply via email to

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