Как преобразовать переменную DateTime в awk к секундам?

У меня есть переменная в который хранилища DateTime в awk

test=$(f["DateTime"])
print "Printing Test variable:",test 

Вывод:

 Printing Test variable:,"2018-12-18 18:36:55"

Я хочу преобразовать значение в тесте к секундам

Мог кто-либо говорить мне, как сделать это в awk

Используя mktime () дает-1 как вывод

    print mktime(gensub(/[ :-]/," ","g",test))

Мои Входные данные (файл CSV) похожи ниже

DateTime,Dealer,Some Value,State,CallEndTime,Some Value,TotalDuration,,..

 "2019-01-07 11:35:42","Car","fab","foo",,"bar","100","boo",..

Я получил значение DateTime от этого,

1
задан 23 January 2019 в 07:04

1 ответ

Если у Вас есть GNU awk (gawk) можно использовать mktime функция - однако вход должна быть разделенным пробелом datespec формы "YYYY MM DD HH MM SS [DST]". Поля даты в Вашей переменной находятся в правильном порядке, но необходимо будет заменить разделители пробелами:

$ gawk -v test="2018-12-18 18:36:55" 'BEGIN{print mktime(gensub(/[ :-]/," ","g",test))}'
1545176215

Посмотрите, например, Функции Времени в Руководстве пользователя Awk GNU


Если Ваша строка будет включена в двойные кавычки, то необходимо будет удалить их также:

$ gawk -v test='"2018-12-18 18:36:55"' 'BEGIN{print mktime(gensub(/[ ":-]/," ","g",test))}'
1545176215
1
ответ дан 7 December 2019 в 15:08

Другие вопросы по тегам:

Похожие вопросы: