Verifique isso:
awk -F, '{date1[$4]+=$1;++date2[$4]}END{for (key in date1) print "Average of",key,"is",date1[key]/date2[key]}' file
Average of 27:May:2017 is 2677.57
Average of 26:May:2017 is 1410.02
Average of 25:May:2017 is 2940.02
Explicação:
-F, : define o delimitador. Como alternativa, pode ser awk 'BEGIN{FS=","}...
Em seguida, criamos dois arrays date1 e date2 nos quais usamos o quarto campo $4 como índice / chave da matriz e o primeiro campo $1 como valor adicionado ao valor existente da mesma posição da matriz.
Então, para a primeira linha, teríamos
date1[27:May:2017]+=2415.02 e ++date2[27:May:2017] - > aumenta o valor em 1 - > valor 1 para primeira linha
Para a próxima data (linha 2), teríamos
date1[27:May:2017]+=2415.02 + 3465.02 e ++date2[27:May:2017] - > aumenta o valor em 1 - > valor 2 (segunda linha)
A mesma lógica se estende a todas as linhas que possuem a mesma data e também a todas as datas diferentes.
No final, usamos um loop for para percorrer as chaves da matriz date1 (ou date2 - as chaves são iguais nas duas matrizes = > $4 ) e para cada key descobrimos que imprimimos key (= a data $ 4) e também imprimimos a date1[key] value = soma de todos os valores $1 para a mesma data $4 , dividido por date2[key] value = contagem numérica das linhas encontrado com a mesma data = mesmo $4 .