Chinaunix

标题: 时间戳转换 [打印本页]

作者: daxuewuhen2014    时间: 2014-03-03 17:14
标题: 时间戳转换
现在日志里有一些时间都是这样的
20140302143011
20140302143011
20140302143237  
现在在请把它转换成时间戳
作者: laliheyi    时间: 2014-03-03 17:17
回复 1# daxuewuhen2014

你想要哪样的戳呢?
   
作者: 这个冬天不冷    时间: 2014-03-03 17:36
  1. [root@syh test]# awk '{t=gensub(/(....)(..)(..)(..)(..)(..)/,"\\1 \\2 \\3 \\4 \\5 \\6","g",$0);print t, mktime(t)}'  a
  2. 2014 03 02 14 30 11 1393741811
  3. 2014 03 02 14 30 11 1393741811
  4. 2014 03 02 14 32 37 1393741957
  5. [root@syh test]# cat a
  6. 20140302143011
  7. 20140302143011
  8. 20140302143237
  9. [root@syh test]#
复制代码

作者: yestreenstars    时间: 2014-03-03 17:40
回复 3# 这个冬天不冷

打那么多点不累吗?
  1. $ awk -vFIELDWIDTHS='4 2 2 2 2 2' '{$1=$1;print mktime($0)}' i
  2. 1393741811
  3. 1393741811
  4. 1393741957
复制代码

作者: 这个冬天不冷    时间: 2014-03-03 17:44
回复 4# yestreenstars
.... 累,向星辰大大学习 :wink:


   
作者: jason680    时间: 2014-03-03 17:50
本帖最后由 jason680 于 2014-03-03 17:52 编辑

回复 3# 这个冬天不冷

other way

# awk '{t=gensub(/(..)/,"\\1 ","g",$1);sub(" ","",t);print $1"=>"mktime(t)","t}' FILE
20140302143011=>1393741811,2014 03 02 14 30 11
20140302143011=>1393741811,2014 03 02 14 30 11
20140302143237=>1393741957,2014 03 02 14 32 37


   
作者: bikkuri    时间: 2014-03-03 17:53
  1. [root@hp8 test]#sed -e 's/\(....\)\(..\)\(..\)\(..\)\(..\)\(..\)/\1-\2-\3 \4:\5:\6/' timelist|while read -r line; do date -d "$line" +%s ; done
  2. 1393741811
  3. 1393741811
  4. 1393741957
  5. [root@hp8 test]#
复制代码

作者: 这个冬天不冷    时间: 2014-03-03 18:06
回复 7# bikkuri


    兄弟,敲这么多点不累么,,@yestreenstars
作者: bikkuri    时间: 2014-03-03 19:21
学习了!貌似busybox下的awk不支持FIELDWIDTHS。
  1. root@dbox:/tmp/test# awk '{t=gensub(/(....)(..)(..)(..)(..)(..)/,"\\1 \\2 \\3 \\4 \\5 \\6","g",$0);print t, mktime(t)}' timelist
  2. 2014 03 02 14 30 11 1393741811
  3. 2014 03 02 14 30 11 1393741811
  4. 2014 03 02 14 32 37 1393741957
  5. root@dbox:/tmp/test# awk -vFIELDWIDTHS='4 2 2 2 2 2' '{$1=$1;print mktime($0)}' timelist
  6. -1
  7. -1
  8. -1
  9. root@dbox:/tmp/test# awk '{t=gensub(/(..)/,"\\1 ","g",$1);sub(" ","",t);print $1"=>"mktime(t)","t}' timelist
  10. 20140302143011=>1393741811,2014 03 02 14 30 11
  11. 20140302143011=>1393741811,2014 03 02 14 30 11
  12. 20140302143237=>1393741957,2014 03 02 14 32 37
  13. root@dbox:/tmp/test#
复制代码

作者: kernel69    时间: 2014-03-03 21:45
perl的点也不少
  1. perl -MTime::Local -lne '/(....)(..)(..)(..)(..)(..)/;print timelocal($6,$5,$4,$3,$2-1,$1-1900)' t
  2. 1393741811
  3. 1393741811
  4. 1393741957
复制代码
回复 1# daxuewuhen2014


   
作者: brian_x    时间: 2018-10-06 19:40
回复 6# jason680

能解释一下gensub(/(..)/,"\\1 ","g",$1);sub(" ","",t) 这个吗??不太理解原理,感谢

作者: brian_x    时间: 2018-10-06 19:49
brian_x 发表于 2018-10-06 19:40
回复 6# jason680

能解释一下gensub(/(..)/,"\\1 ","g",$1);sub(" ","",t) 这 ...

已找到答案,感谢






欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2