如何将 awk 中的 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

如果你有 GNU awk ( gawk),你可以使用它的mktime功能 - 但是输入必须是空格分隔的日期规范形式为"YYYY MM DD HH MM SS [DST]"。变量中的日期字段顺序正确,但您需要用空格替换分隔符:

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

例如GNU Awk 用户指南中的时间函数


如果您的字符串用双引号引起来,那么您也需要将其删除:

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

相关内容