给出一个开始,一个结束日期和一个如何在awk中创建序列的步骤?

时间:2014-04-23 08:36:58

标签: linux shell date unix awk

我是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

1 个答案:

答案 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更合适的值。请参阅上面文档的链接。