我有变量timeData
,其值如下文awk
$(f["DateTime"])="2018-12-17 15:10:19"
timeData = gensub(/[-:]/," ","g",$(f["DateTime"]))
我需要使用mktime(timeData)
,以便它以秒为单位给出时间,
temp = mktime(timeData)
打印temp的值将得到-1
作为输出,我认为问题不是在mktime中使用双引号,有人可以告诉我如何在awk中使用它。
答案 0 :(得分:4)
假设您使用的是GNU awk,您的代码将保持原样。如果您遇到问题,那么它与您的输入数据有关,而不与您的代码有关,并且与在mktime()中添加双引号无关。
awk 'BEGIN {
$(f["DateTime"])="2018-12-17 15:10:19"
timeData = gensub(/[-:]/," ","g",$(f["DateTime"]))
temp = mktime(timeData)
print timeData, "->", temp
}'
2018 12 17 15 10 19 -> 1545081019
答案 1 :(得分:2)
观看:
$ awk 'BEGIN{temp=2018 12 26 11 54 43; temp2="2018 12 26 11 54 43"; print temp; print temp2; print mktime(temp2);}'
20181226115443
2018 12 26 11 54 43
1545796483
您基本上做对了,但是...
这是因为您没有在分配日期前后加上引号,因此将它们串联起来。