Linux
以時間格式 hh:mm:ss 計算兩列之間的時間差
我想要第 5 列和第 4 列之間的時間差
我的輸入:
DATE TIMESTAMP ID START TIME END TIME 2019-04-05 13:57:19 1607 13:06:42 13:07:12 2019-04-05 13:58:00 2327 13:57:26 13:57:43
輸出要求:
DATE TIMESTAMP ID START TIME END TIME TIME DIFFERENCE 2019-04-05 13:57:19 1607 13:06:42 13:07:12 00:00:30 2019-04-05 13:58:00 2327 13:57:26 13:57:43 00:00:17
使用的程式碼:
awk ' function convert(t) { split(t,Arr,":") return Arr[1]*3600+Arr[2]*60+Arr[3] } /^#/ {print $0,"\ttotal(sec)"; next} {print $0,"\t",convert($5)-convert($4) }'
程式碼輸出:
DATE TIMESTAMP ID START TIME END TIME TIME DIFFERENCE 2019-04-05 13:57:19 1607 13:06:42 13:07:12 30 2019-04-05 13:58:00 2327 13:57:26 13:57:43 17
上面給定命令的輸出以秒為單位,我需要 HH:MM:SS 中的輸出。
awk ' function convert(t) { split(t,Arr,":") return Arr[1]*3600+Arr[2]*60+Arr[3] } function HMS(sec){ hr=int(sec/3600) min=int(sec/60-hr*60) sec=sec-(hr*3600+min*60) return sprintf("%02d:%02d:%02d",hr,min,sec) } /^#/ {print $0,"\ttotal(sec)"; next} {print $0,"\t",HMS(convert($5)-convert($4)) }'