[linux] Как просуммировать время?

ivashka

В текстовом файле есть колонка со временем в формате мм:сс
нужно просуммировать это время
bc умеет такое?

sergey_m

Я хотел сказать man date, потому как в FreeBSD твою задачу можно решить с его помощью, но на всякий случай посмотрел что умеет date в Linux. К сожалению date тебе не поможет.

Julie16

Разбей на 2 части и посчитай сумму минут и секунд отдельно. А потом сделай m += s / 60, s = s % 60(не помню точно как это записать в bc ). res="$m:$s"

Marinavo_0507


( echo -n '0'
while read X ; do
Y=`echo "$X" | sed -e 's,:,*60+,'`
echo -n "+$Y"
done
echo ) | bc -l

ppplva

perl -e 'while (<>) {if (/(\d+):(\d+)/) {$m+=$1;$s+=$2}} print $m*60+$s,"\n"'

Julie16

Я так понимаю что ответ в секундах будет?

Marinavo_0507

да, а что?

Julie16

Плохо. Автор наверное желает mm:ss.

Barbie29

Отошли файл обратно... сумма будет левой, если часы там накапливаться будут. пусть пришлют время
в виде YYYY Month day hh mm ss. тогда просуммируем

ivashka

МТСу отослать?
каким образом сумма будет левой - не понял

Barbie29

угу, МТСу, да простым... сколько будет 34:22+34:23? правильно: 08:45.

Barbie29

ой, наверно я стормозил, сумма в секундах если представляется, то число секунд умножается на число минут+число секунд.

ivashka

да мне не программу забацать
просто для себя, чтоб вручную не возиться
иногда сталкиваюсь, а как быстро посчитать не знаю
тем более, если это делается какими либо стандартными средствами, то там такая ситуация нормально обходится, я думаю

Barbie29

ну, яб тогда в уме складывал, тренирует память... взглянул... и сумма

spirinale

k - номер колонки со временем
awk '{split($k, t, ":"); h+=t[1]; m+=t[2]} END{print h+(m-m%60)/60 ":" m%60}'
Оставить комментарий
Имя или ник:
Комментарий: