通常awk要用来处理分析很多系统的记录文件,而记录文件里面通常包含关于时间的一些字段。gawk中增加的三个时间处理函数极大地增加了便利。
systime()
返回自Epoch时间(1970-01-01 00:00:00 UTC on POSIX systems)到系统当前时间所经过的秒数。
$ echo | awk '{print systime()}' 1299399602
mktime(datespec)
其参数datespec的格式是YYYY MM DD HH MM SS[ DST],而其返回的值和systime()的返回值相同。也就是自Epoch时间以来系统时间所经历了的秒数。如果datespec不符合所要求的格式,则返回-1。
$ echo | awk '{print mktime("2011 03 06 16 24 08")}' 1299399848
strftime([format [, timestamp[, utc-flag]]])
上面的三个参数都是可选的。如果三个参数都没有提供,返回系统当前时间,其输出格式是date命令默认的格式。
$ date Sun Mar 6 16:27:25 HKT 2011
$ 下面是使用gawk的内建函数strftime在没有参数的情况下的输出。
$ echo | awk '{print strftime()}' Sun Mar 06 16:28:32 HKT 2011
$ 我们也可以自己指定其输出的时间格式
$ echo | awk '{print strftime("%Y %m %d %H %M %S","1299399848")}' 2011 03 06 16 24 08
$ 对当前系统时间格式化输出
$ echo | awk '{print strftime("%Y %m %d %H %M %S",systime())}' 2011 03 06 16 31 51