Awk

計算兩條線之間的時間差

  • January 5, 2018

文件中的 grep 時間戳,如下所示。現在我需要計算時差

檔案資料:

18:29:10
04:56:50

我嘗試了以下命令,其輸出為減號:

awk -F":" 'FNR==1{split($0,a,":");sec1=a[1]*3600+a[2]*60+a[3]} FNR==2{split($0,b,":");sec2=b[1]*3600+b[2]*60+b[3];val=sec2-sec1;ho=int(val/3600);val=val%3600;mi=sprintf("%02d",(val/60));val=val%60;;print ho":"mi":"val}' file.txt

輸出為:-13:-32:-10

我想要這樣的輸出:10:27:40

假設你的意思是 10:27:40

awk -F: '
 {t[NR] = $3 + 60 * ($2 + 60 * $1)}
 END{
   d = t[2] - t[1]
   if (d < 0) d += 86400
   h = d / 3600
   d %= 3600
   m = d / 60
   s = d % 60
   printf "%02d:%02d:%02d\n", h, m, s
 }'

使用 GNU 日期:

string1="18:29:10"
string2="04:56:50"
StartDate=$(date -u -d "$string1" +"%s")
FinalDate=$(date -u -d "$string2" +"%s")
date -u -d "0 $FinalDate sec - $StartDate sec" +"%H:%M:%S"

輸出:

10:27:40

學分:https ://stackoverflow.com/a/27442175/3776858

引用自:https://unix.stackexchange.com/questions/414725