LINUX时间格式转换

1. 时间显示格式: 2018-12-20 18:00:15

转换为UNIX时间戳: date -d '2018-12-20 18:00:15' +%s
输出:1545300015

2. UNIX时间戳: 1545300015

不指定转换格式:date -d @1545300015
输出:Thu Dec 20 18:00:15 CST 2018

转换为指定时间格式:date -d @1545300015   +'%Y-%m-%d %H:%M:%S'
输出: 2018-12-20 18:00:15

3. awk 命令转换(适用于多文本内容)
a.单列:gensub格式化log文本中的第1列时间,打印出第1列和对应的转换后的UNIX时间戳

cat log |awk '{t=gensub(/(..)/,"\\1 ","g",$1);sub(" ","",t); print "源格式="$1" UNIX格式="mktime(t)}'

cat log |awk '{t=gensub(/(....)(..)(..)(..)(..)(..)/,"\\1 \\2 \\3 \\4 \\5 \\6","", $1); print "源格式="$1" UNIX格式="mktime(t)}'

输出:
源格式=20190228180015 UNIX格式=1551348015
源格式=20190228183020 UNIX格式=1551349820

b.多列: gensub格式化log文本中的第1、2列时间,打印出第1、2列和对应的转换后的UNIX时间戳
cat log |awk '{t=gensub(/(..)/,"\\1 ","g",$1);p=gensub(/(..)/,"\\1 ","g",$2);sub(" ","",t);sub(" ","",p); print "src="$1" dest="mktime(t)"|src="$2" dest="mktime(p)}'

cat log |awk '{t=gensub(/(....)(..)(..)(..)(..)(..)/,"\\1 \\2 \\3 \\4 \\5 \\6","", $1); p=gensub(/(....)(..)(..)(..)(..)(..)/,"\\1 \\2 \\3 \\4 \\5 \\6","", $2); print "src="$1" dest="mktime(t)"|src="$2" dest="mktime(p)}'

输出:
src=20190228180015 dest=1551348015 | src=20190228181023 dest=1551348623
src=20190228183020 dest=1551349820 | src=20190228190312 dest=1551351792

注:log文本内时间格式必须为20190228180015  (年月日时分秒)

4. awk命令转换UNIX格式为指定格式(适用于多文本内容)
a. log文本内UNIX时间为1545300015(秒级十位数)
cat log |awk '{print "源格式="$1,  " 指定格式="strftime("%Y%m%d%H%M%S",$1) }'

输出:
源格式=1545300015 指定格式=20181220180015

b. log文本内UNIX时间为1545300015123(毫秒级),UNIX时间除以1000
cat log |awk '{print "源格式="$1,  " 指定格式="strftime("%Y%m%d%H%M%S",$1/1000) }'

输出:
源格式=1545300015123 指定格式=20181220180015

 

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值