Как использовать переменную внутри mktime в awk? - PullRequest
0 голосов
/ 22 января 2019

У меня есть переменная 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 голосов
/ 22 января 2019

Ваш код безупречен, если вы используете 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
0 голосов
/ 22 января 2019

Смотреть это:

$ 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

Ты делаешь все правильно, но ...
Это потому, что вы не ставили кавычки вокруг назначаемой даты, поэтому они были объединены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...