如何在awk的mktime中使用变量?

时间:2019-01-22 10:22:35

标签: awk sed

我有变量timeData,其值如下文awk

$(f["DateTime"])="2018-12-17 15:10:19"

timeData = gensub(/[-:]/," ","g",$(f["DateTime"]))

我需要使用mktime(timeData),以便它以秒为单位给出时间,

temp = mktime(timeData)

打印temp的值将得到-1作为输出,我认为问题不是在mktime中使用双引号,有人可以告诉我如何在awk中使用它。

2 个答案:

答案 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

您基本上做对了,但是...
这是因为您没有在分配日期前后加上引号,因此将它们串联起来。