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

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

Re: [shell-script] Somar valores em arquivos diferente


From: Tiago Ribeiro
Subject: Re: [shell-script] Somar valores em arquivos diferente
Date: Tue, 18 Nov 2014 15:26:02 -0200

Tiago/MrBiTs, 

Obrigado pelas explicações, vou digeri-las com calma e ir trabalhando nas 
soluções que passaram. Excelente conteúdo
em 1 ou poucas linhas.

> Em 18/11/2014, à(s) 11:51, MrBiTs address@hidden [shell-script] 
> <address@hidden> escreveu:
> 
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
> 
> On 11/18/2014 11:16 AM, Tiago Ribeiro address@hidden [shell-script] wrote:
>> 
>> 
>> MrBiTs, obrigado.
>> 
>> Resumindo, ficou bom pacas, proximo passo vai ser jogar no gnuplot, vou 
>> brincando aqui com o awk e ir traduzindo pra uma forma
>> que eu entenda o que as linhas fazem.
>> 
>> BEGIN { print "Data       Hora\t\t   Quantidade"; } == OK
>> 
>> { Qtd[$1" "$2]++; count[$1" "$2]+=$NF; } END{ for (var in Qtd) print 
>> var,"\t","\t",count[var]; }
>> 
>> Tentando entender este restante.
>> 
> 
> Essa parte é exatamente a parte de trabalho com hashes que eu citei no meu 
> primeiro e-mail.
> 
> Quando eu faço X[y] estou criando um  hash X com chave y. No seu caso, $1 é a 
> data, $2 é a hora e $3 é a quantidade que você quer
> somar. Essas são variáveis do AWK. Quando eu faço Qtd[$1" "$2] eu crio um 
> hash Qtd com chave data, espaço, hora. Na verdade, esse
> Qtd aí poderia muito bem ser tirado, ficando só com o count[$1" "$2], onde eu 
> crio um hash count com a chave já citada. O x+=y
> indica que eu estou incrementando x com y (ou x = x + y). No caso, eu poderia 
> fazer count[$1" "$2]+=$3. O NF também é do AWK e é
> uma variável que te dá o número total de campos de um registro. No caso, uma 
> linha nossa é um registro. Então, pegando $NF, eu
> garanto que estou pegando o último campo e incrementando a chave data hora do 
> nosso hash count com esse valor.
> 
> O BEGIN/END vai ser executado até o fim do arquivo (como se fosse um for 
> linha in $(cat arquivo), então no final da leitura do
> arquivo eu vou ter um hash contendo todas as nossas datas e horas e a 
> quantidade de ocorrências somadas nele. Agora, só falta
> imprimir isso. É o que o for (var in Qtd) faz. Esse for poderia ser escrito 
> com for (var in count) também. Ele lê nosso hash e
> joga suas chaves para uma variável var (eu sou um cara muito criativo com 
> nomes de variáveis). Aí eu imprimo var (a chave data
> espaco hora) e imprimo o valor associado a essa chave no dicionário count.
> 
> Simples.
> 
> - -- 
> echo
> 920680245503158263821824753325972325831728150312428342077412537729420364909318736253880971145983128276953696631956862757408858710644955909208239222408534030331747172248238293509539472164571738870818862971439246497991147436431430964603600458631758354381402352368220521740203494788796697543569807851284795072334480481413675418412856581412376640379241258356436205061541557366641602992820546646995466P
> | dc
> 
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1
> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
> 
> iQEcBAEBCAAGBQJUa07cAAoJEG7IGPwrPKWry/YH/0pIrnHw7+CAVNXJmHc3JrIf
> Xr0h/CNfgFWvXMv675sgpc3DqLXkDXJwgprq/ssHlBTKXmlsiWlQkdotTTohy/VM
> Au1G8YR+vztjfZC6DK108KsIq5GDAntGfqdFgq83g23yRon1NPdjNrbBCwyuW/BD
> 3wWLyqLa3HWX3wyb3hXMvmz6rOL2nqj0QwODMFkH9Sr6L8E0COq7dGo8OI7m6FQa
> vmLvHSUmzCjYTFmtFsBw92DpUFYkUINMaqapyRMEuAf3IDR1Q2i5TN8mvYuXWabQ
> mz/75wJgUbQx2ERnkFBWE4REJcJBXHWusz2HFkT20IpksBYqEETbDtAY1S6bWxw=
> =pHin
> -----END PGP SIGNATURE-----
> 
> 
> ------------------------------------
> Enviado por: MrBiTs <address@hidden>
> ------------------------------------
> 
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como 
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em 
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
> 
> 
> ------------------------------------
> 
> Links do Yahoo Grupos
> 
> 

--
www.bsdjf.com.br






reply via email to

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