2014-11-17 6 views
4

У меня есть файл с 2 столбцами, 1-й столбец с HH: MM: формат SS и второй столбец.
Я хочу суммировать 2-й столбец на основе 1-го купона. по часам и минутам 1-й колонки.
Сумма столбца на основе другого столбца

Вход:

00:00:00,2.00, 
00:00:10,1.00, 
00:00:20,2.00, 
00:00:30,6.00, 
00:00:40,1.00, 
00:00:50,7.00, 
00:01:00,8.00, 
00:01:10,7.00, 
00:01:20,8.00, 
00:01:30,11.00, 

Для Hour: ниже AWK работ,

awk -F, '{ a[substr($1,0,2)]+=$2 } END{ for (i in a) print i "," a[i] }' file 

выхода:

00,53 

Для минуты:
неспособной суммы столбца на основе на поданный Minute, пожалуйста, предложите способ получить ожидаемый результат.

Освобожденные Выход:

00:00,19 
00:01,34 

ответ

6

Использование `AWK:

awk -F '[:,]' -v OFS=, '{s[$1 ":" $2]+=$(NF-1)} END{for (i in s) print i, s[i]}' file 
00:00,19 
00:01,34 

EDIT: При заказе оригинальных меток времени важно затем использовать:

awk -F '[:,]' -v OFS=, '{k=$1":"$2} !s[k]{b[++n]=k} {s[k]+=$(NF-1)} 
    END {for (i=1; i<=n; i++) print b[i], s[b[i]]}' file 
00:00,19 
00:01,34 
+1

Это прекрасно. Благодаря! – Marjer

+1

Было бы полезно, если вы объясните часть регулярного выражения. – Marjer

+2

Гораздо лучшее решение. Вам не нужно обрабатывать форматирование. – Jotne

2

Вам нужно добавить минут до часа, а затем рассчитывать.

awk -F, '{ a[substr($1,0,2)+substr($1,4,2)]+=$2 } END{ for (i in a) print i "," a[i] }' 
0,19 
1,34 

Затем вы можете использовать некоторые математические и printf получить форматирование.

+0

Удивительно, можно ли включать в час Поданный в результат. 00: 00,19 00: 01,34 – Marjer

+2

@ Marjer anubhava лучше :) – Jotne

Смежные вопросы