Gnu AWK 提供内置函数
strftime()
它可以转换时间戳1359210984
into Sat 26. Jan 15:36:24 CET 2013
。
我找不到可以执行此操作的函数:
seconds = timefromdate("Sat 26. Jan 15:36:24 CET 2013", "%a %d. %b %H:%M:%S CET %Y")
or
seconds = timefromdate("2013-01-26 15:36:24", "%Y-%m-%d %H:%M:%S")
Whereas seconds
那么就是1359210984
.
因此,日期字符串应该可以通过格式模式进行转换。
我只想在 gawk 中执行此操作。
Edit 1:
我想仅在 gawk 中转换日期以进一步处理流。
Edit 2:
我已经澄清了我的问题。 “会这样做”的代码示例有点草率。
您正在寻找的函数称为mktime()
。您应该使用gensub()
函数将日期规范操作为可以读取的格式mktime()
.
要格式化您给出的第二个示例,请考虑:
BEGIN {
t = "2013-01-26 15:36:24"
f = "\\1 \\2 \\3 \\4 \\5 \\6"
s = mktime(gensub(/(....)-(..)-(..) (..):(..):(..)/, f, "", t))
print s
}
我的机器上的结果:
1359178584
要格式化您给出的第一个示例,请考虑:
BEGIN {
t = "Sat 26. Jan 15:36:24 CET 2013"
gsub(/\.|:/, FS, t)
split(t,a)
Y = a[8]
M = convert(a[3])
D = a[2]
h = a[4]
m = a[5]
s = a[6]
x = mktime(sprintf("%d %d %d %d %d %d", Y, M, D, h, m, s))
print x
}
function convert(month) {
return(((index("JanFebMarAprMayJunJulAugSepOctNovDec", month) - 1) / 3) + 1)
}
我的机器上的结果:
1359178584
欲了解更多信息,请咨询manual, 具体来说时间函数 and 字符串函数. HTH.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)