使用AWK 将字符串转换为时间 求时间差

如有两个时间是字符串类型的 如: 20170316140104 20170316140204 需要计算两个时间的时间差

1、使用substr 截取字符串 共mktime函数使用

2、使用strftime 计算出时间

3、两个时间相减

 

在我需要计算时差的文件中 第7字段表示发送时间  第8字段表示接收响应的时间  所以取值的时候 使用 $7 $8来取值  字段的分隔符为“|”

脚本如下:

cat * | awk -F"|" '{y1= substr($7,1,4); m1=substr($7,5,2); d1=substr($7,7,2);h1=substr($7,9,2);M1=substr($7,11,2);s1=substr($7,13,2);y2= substr($8,1,4); m2=substr($8,5,2); d2=substr($8,7,2);h2=substr($8,9,2);M2=substr($8,11,2);s2=substr($8,13,2); time1 = strftime("%s",mktime(y1" "m1" "d1" "h1" "M1" "s1));time2 = strftime("%s",mktime(y2" "m2" "d2" "h2" "M2" "s2));if (time2-time1>22){print $7,$8}}'

posted @ 2017-03-16 14:20  XavierLee  阅读(5368)  评论(0编辑  收藏  举报