使用awk的时差

时间:2011-11-17 14:22:54

标签: time awk

我正在寻找单线程awk代码来查找时间和系统日期之间的差异。时间格式是这样的:16:13:04,699我希望在几分钟内有所不同。我对awk不是很熟悉,我可以通过编写脚本来计算这种差异,但想在一行中完成。

谢谢。

1 个答案:

答案 0 :(得分:4)

不完全是单行:

awk -v 'time=16:13:04,699' -v "date=$(date +%H:%M:%S)" '
  function abs(x) {return x<0 ? -x : x}
  BEGIN {
    split(time, ary, /[:,]/); t_sec = 3600*ary[1] + 60*ary[2] + ary[3]
    split(date, ary, /:/);    d_sec = 3600*ary[1] + 60*ary[2] + ary[3]
    # output difference in minutes
    print abs(t_sec - d_sec)/60
  }
'