我正在运行一些gnu时间脚本,它们生成mm:ss.mm(分钟,秒和毫秒,例如1:20.66)或hh:MM:ss(小时,分钟和秒,例如1:43)的输出: 38).我想将其转换为秒(为了比较它们并在图形中绘制它们).
哪个是使用bash执行此操作的最简单方法?
$ TZ=utc date -d '1970-01-01 1:43:38' +%s
6218
Run Code Online (Sandbox Code Playgroud)
如果你想要纯粹的Bash,你可以做类似的事情
IFS=: read h m s <<<"${hms%.*}"
seconds=$((10#$s+10#$m*60+10#$h*3600))
Run Code Online (Sandbox Code Playgroud)
该10#部分是强制性的规定,则数字以基数10发做不到这一点,如果你会得到错误h,m或者s是08或09(如Bash解释数字与一家领先的0八进制).
假设您可以运行GNU date命令:
date +'%s' -d "01:43:38.123"
Run Code Online (Sandbox Code Playgroud)
如果脚本生成“ mm:ss.mm”,则需要在开头添加“ 00:”,否则date将拒绝它。
如果您使用的是BSD系统(包括Mac OS X),则需要运行,date -j +'%s' "0143.38"除非您在MacPorts或Homebrew上安装了GNU日期。