LINUX.ORG.RU
ФорумAdmin

Преобразование времени в Bash

 


1

3

Добрый день. Имеется csv репорт о звонках. Длительность разговора указана в формате 00:00. Как можно преобразовать время(перевести минуты в секунды) в bash?

Пример:

17/02/17 15:37:17,201,Входящий,1:50,Принят
17/02/17 15:36:36,200,Входящий,2:38,Принят
17/02/17 15:32:03,200,Входящий,0:05,Принят
17/02/17 15:31:34,200,Входящий,0:05,Принят
17/02/17 15:29:00,201,Входящий,0:39,Принят
17/02/17 15:28:42,200,Входящий,0:00,Пропущен
17/02/17 15:28:17,200,Входящий,0:00,Пропущен

ручками

anonymous
()

Если не можешь написать такую простую функцию, то загрузи свой репорт в табличный процессор.

anonymous
()
echo '1:50' | awk -F ':' '{print $1 * 60 + $2}'

Выборку нужного поля из отчета оставляю вам.

alozovskoy ★★★★★
()
Ответ на: комментарий от knock

Какой еще АВК? Дважды же написано, что вопрос про Баш.

$ IFS=',' read -r datetime wtf direction duration status <<< '17/02/17 15:37:17,201,Входящий,1:50,Принят'
$ IFS=':' read -r duration_M duration_S <<< "$duration"
$ echo $(( 60 * duration_M + duration_S ))
110
Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 2)
#!/bin/bash
while read l; do
  ms=${l%,*}
  ms=${ms##*,}
  m=${ms%%:*}
  s=${ms#*:}
 echo $((m*60+s))
done

17/02/17 15:37:17,201,Входящий,1:50,Принят

110

И никакого awk, чистый bash

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)
Ответ на: комментарий от DonkeyHot

Да с ноликом похоже можно себе не то что ноги, прямо из пулемёта всё отстрелить

[d_a@work ~]$ m=0755
[d_a@work ~]$ echo $m
493

d_a ★★★★★
()
Ответ на: комментарий от bass

Компильнул 4.4 и правда верно работат. А в 4.2 порнография: читает в восьмеричной, а выводит в десятичной.

d_a ★★★★★
()
Ответ на: комментарий от kostik87

Да нет вроде, ничего не делал. Vendor defaults я посмотрел, там вроде тоже прилично всё. Ну ладно, буду искать как отключить это.

d_a ★★★★★
()
Ответ на: комментарий от DonkeyHot

Ой да, прошу прощения, я не заметил в образце ведущего ноля.

Тогда так:

$ echo $(( 60 * 10#$duration_M + 10#$duration_S ))

Zmicier ★★★★★
()
Ответ на: комментарий от d_a

Ничоси! Хотите сказать мне бракованный достался?

Подозреваю, что вы m об’явили целочисленной переменной.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

Да, меня сегодня уже попустило, 0755 печатает ^_+
Наверное и правда я в том сеансе что-то вытворил такое.

d_a ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.