Примерно так:
$ awk '
/ebay/ {
split($2,a,":") # separate hs, ms and sses
b+=a[1]*3600+a[2]*60+a[3] # sum them up as as seconds
}
END {
h=int(b/3600) # separate hs
m=int((b-3600*h)/60) # and ms
s=b-3600*h-60*m # and sses
printf "%d:%02d:%02d\n",h,m,s # output
}' file
5:00:00
По сути, вам нужно преобразовать все компоненты времени в секунды, суммировать записи и снова разбивать их на компоненты. Вы также могли бы использовать функции времени GNU awk , но это не позволяло бы выводить все чч: мм: сс, поскольку время> 24 ч конвертировалось бы в даты.
Редактировать
Добавлена версия для суммирования всех значений и группировки по названию компании:
$ awk '
{
split($2,a,":") # separate hs, ms and sses
b[$1]+=a[1]*3600+a[2]*60+a[3] # sum them up as as seconds
}
END {
for(i in b) {
h=int(b[i]/3600) # separate hs
m=int((b[i]-3600*h)/60) # and ms
s=b[i]-3600*h-60*m # and sses
printf "%s %d:%02d:%02d\n",i,h,m,s # output
}
}' file
alibab 240:00:00
amazon 73:02:00
ebay 5:00:00