Dados os dois arquivos que você mostra no início de sua pergunta e assumindo que eles não contêm linhas em branco:
$ awk -F ':' -v OFS=':' '
{ sum[$1]+=$2 }
END { for (key in sum) {
split(key,f,"[_.]")
print f[3],sum[key] } }' file* | sort
2018-06-19:0
2018-06-20:0
2018-06-21:1
2018-06-22:0
2018-06-23:0
2018-06-24:0
2018-06-25:0
2018-06-26:1
2018-06-27:0
2018-07-04:2
2018-07-05:3
2018-07-06:6
2018-07-07:0
2018-07-19:28
2018-07-20:17
2018-07-21:12
2018-07-22:4
2018-07-23:2
2018-07-24:2905
2018-07-25:10440
2018-07-26:2644
2018-07-27:1896
2018-07-28:1238
2018-07-29:932
Use o nome do arquivo como chave em uma matriz associativa chamada sum
e colete a soma de cada nome de arquivo. No final, percorra as teclas sum
e imprima a parte da data de cada chave junto com a soma. A parte da data da chave é o terceiro campo após a divisão em pontos e sublinhados.
O resultado é o canalizado embora sort
.
Mais curto, mas essencialmente o mesmo que o anterior (mas usa apenas a data como chave na matriz sum
):
awk -F '[_.:]' -v OFS=':' '
{ sum[$3]+=$6 }
END { for (d in sum) print d, sum[d] }' file*