[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
- Re: [shell-script] Somar valores em arquivos diferente, (continued)
Re: [shell-script] Somar valores em arquivos diferente, Adolfo Verçosa, 2014/11/17
Re: [shell-script] Somar valores em arquivos diferente, MrBiTs, 2014/11/17
- Re: [shell-script] Somar valores em arquivos diferente, Tiago Ribeiro, 2014/11/17
- Re: [shell-script] Somar valores em arquivos diferente, MrBiTs, 2014/11/17
- Re: [shell-script] Somar valores em arquivos diferente, Tiago Ribeiro, 2014/11/17
- Re: [shell-script] Somar valores em arquivos diferente, MrBiTs, 2014/11/17
- Re: [shell-script] Somar valores em arquivos diferente, Tiago Ribeiro, 2014/11/18
- Re: [shell-script] Somar valores em arquivos diferente, MrBiTs, 2014/11/18
- Re: [shell-script] Somar valores em arquivos diferente,
Tiago Ribeiro <=
Re: [shell-script] Somar valores em arquivos diferente, Julio C. Neves, 2014/11/17