[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Somar valores em arquivos diferente
From: |
MrBiTs |
Subject: |
Re: [shell-script] Somar valores em arquivos diferente |
Date: |
Tue, 18 Nov 2014 11:51:24 -0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 |
-----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-----
- 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 <=
- Re: [shell-script] Somar valores em arquivos diferente, Tiago Ribeiro, 2014/11/18
Re: [shell-script] Somar valores em arquivos diferente, Julio C. Neves, 2014/11/17