Awk字符串操作

Awk字符串操作,awk,Awk,我有字符串: 20120113083000Z 我想把它转换成: 2012 01 13 08 30 00 Z 准备好使用mktime命令将其转换为日期戳 我目前有: echo '20120113083000Z' | awk '{print mktime(gensub(/(....)(..)(..)(..)(..)(..)(.)/,"\\1 \\2 \\3 \\4 \\5 \\6 \\7",1g,$1))}' 1326439800 我知道我可以使用sed或bash来转换它,但我希望将它

我有字符串:

20120113083000Z
我想把它转换成:

2012 01 13 08 30 00 Z
准备好使用
mktime
命令将其转换为日期戳

我目前有:

echo '20120113083000Z' |    
awk '{print mktime(gensub(/(....)(..)(..)(..)(..)(..)(.)/,"\\1 \\2 \\3 \\4 \\5 \\6 \\7",1g,$1))}'
1326439800
我知道我可以使用sed或bash来转换它,但我希望将它保留在awk进程中

有更好(更短或更优雅)的方法吗


注意:我希望尽可能使其通用(
gensub
gawk only(?)。

这可能对我有用:

echo '20120113083000Z' |   awk '{gsub(/../,"& ");sub(/ /,"")}1'
2012 01 13 08 30 00 Z

据我所知,只有GNU awk支持mktime,所以gensub应该可以。谢谢,但我真的想要一个awk解决方案。顺便说一句,sed's/./&/3g'也能工作。感谢您添加第二个解决方案。
echo 20120113083000Z |  awk 'BEGIN { FS = "" } ; { print $1$2$3$4, $5$6, $7$8, $9$10, $11$12, $13$14, $15 }'
echo '20120113083000Z' |   awk '{gsub(/../,"& ");sub(/ /,"")}1'
2012 01 13 08 30 00 Z