Awk ISO в эпоху

Я пишу скрипт в bash, используя awk (mawk), и я хотел бы вернуть вывод системной команды в awk.

У меня есть переменная с именем created в формате ISO: 2013-12-26T17:03:05Z, и я хочу преобразовать ее из ISO в эпоху. Я могу запустить эту строку created_epoch=system("date +\%s -d " created), и она выведет вывод на терминал, но переменная created_epoch равна 0, а не эпохе.

Кто-нибудь знает, как я могу преобразовать формат ISO в эпоху в awk?

Спасибо!


person Alex Sneed Miller    schedule 14.04.2014    source источник
comment
возможный дубликат от даты AWK до эпохи   -  person Alexej Magura    schedule 15.04.2014


Ответы (3)


Попробуйте использовать getline в переменной из канала вместо system

cmd="date +\%s -d "created; cmd | getline current_time

https://www.gnu.org/software/gawk/manual/html_node/Getline_002fVariable_002fPipe.html#Getline_002fVariable_002fPipe

Команда system возвращает в качестве значения статус выхода, возвращенный командой, которая была выполнена. http://www.delorie.com/gnu/docs/gawk/gawk_137.html

person Håkon Hægland    schedule 14.04.2014


Сделай это так:

created_epoch=$(date +\%s -d "$created")
echo $created_epoch
1388077385
person Jotne    schedule 14.04.2014
comment
Я думаю, что именно так это сделать в сценарии оболочки, но это не будет работать в сценарии AWK внутри сценария оболочки. - person Alex Sneed Miller; 17.04.2014