Довольно часто в системном администрировании и обработке данных в целом встает задача аггрегации данных (либо, кто знаком с алгоритмом map-reduce - редукция).
Что значит это заумное слово?
Например, у нас на входе есть данные по трафике по странам:
Что значит это заумное слово?
Например, у нас на входе есть данные по трафике по странам:
IR 195534
IR 2352503
IR 318617
IS 0
IS 4302
IS 6568
IT 172796
IT 44845798
IT 9604406
JE 0
JE 0
JE 0
JM 0
JM 16988
JM 956
JO 11528479
JO 569127
JO 98058
JP 1030332
JP 1103192
Особенность в том, что данные получены из нескольких источников и чтобы получить итоговые цифры, нужно для совпадающих первых полей сложить числа справа.
Как это красиво сделать на Bash?
А вот так:
cat raw_data| sort | awk '{sums[$1] += $2} END {for (a in sums) print a, sums[a]}'И на выходе мы получим аккуратную табличку:
JE 0За мысли о реализации спасибо: http://stackoverflow.com/questions/13258902/simple-aggregation-using-linux-scripting
JM 17944
JO 12195664
IR 2866654
JP 2133524
IS 10870
IT 54623000
No comments :
Post a Comment
Note: only a member of this blog may post a comment.