[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: |
Mon, 17 Nov 2014 18:05:38 -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/17/2014 05:47 PM, Tiago Ribeiro address@hidden [shell-script] wrote:
> Boa tarde,
>
> Estou tentando fazer um script que some o terceiro campo de N arquivos, são
> arquivos simples, mas confesso que não estou
> sabendo nem muito por onde começar.
>
> o conteúdo dos arquivos são assim:
>
> # cat arq1.txt 2014-11-16 23:30 10 2014-11-16 23:35 10 2014-11-16 23:40 11
> 2014-11-16 23:45 11 2014-11-16 23:50 11 2014-11-16
> 23:55 11 2014-11-17 00:00 11
>
> # cat arq2.txt 2014-11-16 23:30 5 2014-11-16 23:35 5 2014-11-16 23:40 7
> 2014-11-16 23:45 8 2014-11-16 23:50 10 2014-11-16 23:55
> 10 2014-11-17 00:00 10
>
> #cat arqN.txt 2014-11-16 23:30 N 2014-11-16 23:35 N 2014-11-16 23:40 N
> 2014-11-16 23:45 N 2014-11-16 23:50 N 2014-11-16 23:55
> N 2014-11-17 00:00 N
>
>
> onde DATA HORA VALOR - são separados por espaço, isto não interfere, posso
> mudar para ; | ou qualquer outra coisa.
>
> terei vários arquivos com estes conteúdos, quero somar o campo 3 do arquivo 1
> + 2 + N e gerar um novo com DATA HORA (SOMA de
> todos os arquivos).
>
> # cat soma.txt 2014-11-16 23:30 X 2014-11-16 23:35 X 2014-11-16 23:40 X
> 2014-11-16 23:45 X 2014-11-16 23:50 X 2014-11-16 23:55
> X 2014-11-17 00:00 X
Tá facil. Provavelmente te falte aí uma teoria sobre arrays associativos (os
clássicos hashes ou dicionários de outras
linguagens). Eu iria por esse caminho, ou talvez pelo awk. Veja se é viável
colocar os vários arquivos em um só e fazer um sort
neles (embora a solução que eu vou te apresentar não necessite disso) só para
agilizar a coisa.
Eu faria um scriptzinho em awk mais ou menos assim:
BEGIN {
print "Data Hora\t\t Quantidade";
}
{
Qtd[$1" "$2]++;
count[$1" "$2]+=$NF;
}
END{
for (var in Qtd)
print var,"\t","\t",count[var];
}
e aí você o chama com awk -f script.awk arquivo
Daí você pode jogar isso dentro de um shellzinho e viva.
- --
echo
920680245503158263821824753325972325831728150312428342077412537729420364909318736253880971145983128276953696631956862757408858710644955909208239222408534030331747172248238293509539472164571738870818862971439246497991147436431430964603600458631758354381402352368220521740203494788796697543569807851284795072334480481413675418412856581412376640379241258356436205061541557366641602992820546646995466P
| dc
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
iQEcBAEBCAAGBQJUalUSAAoJEG7IGPwrPKWrDK8IAJ9/TpHgx9dWuJOIs362BZ/2
1wOkcxEtuhAa3lEcPlJHZjs+j9nTMtdyvKQePSi+qBRDG5hB48kTLrv6KnFj3V8z
VXsfLyJ0zktDhSJzQ86w3SwIrx4HG7r9lnKTmp06VW83OpKYpzpaapOEKM+ssfxK
rXHKtSEQs3rcaY5iZTKJJ847TCteRb39+5ofuu6/DS+W44fvn2PHfQt1epYOuPxT
uNpX6dZ0oxz+x6gXfyImM3upQbP6fwT1bMaqzppfWXrruNJEWuAMHpsIKw2/40l/
PHlZJeF7bTN2vOCfKmUNhZk8r2pvhLoq1fYXX8PXwT/uiO0zass4DIrnXs8v9QI=
=hjAy
-----END PGP SIGNATURE-----
Re: [shell-script] Somar valores em arquivos diferente, Adolfo Verçosa, 2014/11/17
Re: [shell-script] Somar valores em arquivos diferente,
MrBiTs <=
- 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, 2014/11/18
Re: [shell-script] Somar valores em arquivos diferente, Julio C. Neves, 2014/11/17