2012-06-27 68 views
-3

我有这个整数20120305193821,我想将它拆分成几个部分2012-03-05-19:38:21以供在awk中进一步使用。任何人都可以帮忙吗?awk拆分整数分成几部分

+4

你到目前为止尝试过什么?我们希望你至少自己尝试过这个,而不是仅仅做一个“给代码解密”。 –

+0

想到用sprintf()或printf()分割它,但不知道要将整数分成较小的部分。由于没有FS,split()不能被使用,我可以把整数分开。可以尝试用两个数组来分割索引()sp = 4,2,2,2,2,2,另一个作为函数打印输出。有没有简短的解决方案,这就是我问这个问题的原因。 – sdf

回答

4

如果您正在使用GAWK,您可以使用FIELDWIDTHS:

echo 20120305193821 | gawk '{printf "%s-%s-%s-%s:%s:%s\n", 
     $1, $2, $3, $4, $5, $6}' FIELDWIDTHS="4 2 2 2 2 2" 
+0

FIELDWIDTHS对我来说是新事物。非常感谢! – sdf

2

为什么不使用子字符串?写作很无聊,但是你提示你有指数?

echo "20120305193821" | awk '{printf "%s-%s-%s-%s:%s:%s\n",substr($1,1,4),substr($1,5,2),substr($1,7,2),substr($1,9,2),substr($1,11,2),substr($1,13,2)}' 

输出:

2012-03-05-19:38:21

2

我知道你没't tag pretty sed所以只是在这里发表以供参考 -

$ echo 20120305193821 | sed 's/\(....\)\(..\)\(..\)\(..\)\(..\)\(..\)/\1-\2-\3-\4:\5:\6/' 
2012-03-05-19:38:21