我是awk的新手,受时间戳问题的挑战。我想创建一个序列给定一个开始,一个结束日期和一个如何在awk中创建一个序列的步骤?
例如: startime = 01-01-2014:00:00:00 , endtime = 01-01-2014:00:45:00 by 15 mn 有这个序列。
01-01-2014 :00:00:00
01-01-2014 :00:15:00
01-01-2014 :00:30:00
01-01-2014 :00:45:00
答案 0 :(得分:1)
如果您可以将输入日期转换为适合mktime
的格式,则其他日期应该很简单。
awk -v start="01-01-2014 :00:00:00" -v stop="01-01-2014 :00:45:00" '
BEGIN { split(start, from, "[-: ]+"); split(stop, until, "[-: ]+");
begin=mktime(from[3] " " from[2] " " from[1] " "
from[4] " " from[5] " " from[6]);
end=mktime(until[3] " " until[2] " " until[1] " "
until[4] " " until[5] " " until[6]); }
END { for (i=begin; i<=end; i+=60*15) print strftime("%c", i) }' </dev/null
如果您需要不同的输出格式,请将第一个参数更改为strftime
更合适的值。请参阅上面文档的链接。