如何在shell脚本中将时间格式字符串(如“0M0.000s”)转换为秒

时间:2015-02-06 06:17:29

标签: shell time

如何将时间格式字符串(如“0M0.000s”)转换为秒

请告诉我计算

或者plz告诉我如何才能在shell脚本中实现它

2 个答案:

答案 0 :(得分:0)

ts="0M0.000s"
minutes=${ts%M*}
seconds=${ts#*M}
seconds=${seconds%s} # strip trailing "s"
total=$(bc <<< "$minutes*60 + $seconds")

答案 1 :(得分:0)

这将进行转换:

awk -F'[Ms]' '{print 60*$1+$2}'

例如:

$ echo '1M2.34s' | awk -F'[Ms]' '{print 60*$1+$2}'
62.34

如何运作

  • -F'[Ms]'

    这会告诉awkMs视为字段分隔符。

  • print 60*$1+$2

    这告诉awk将第一个字段(分钟)乘以60并将其添加到第二个字段(秒)。这会产生以秒为单位的总时间。

在脚本中使用

假设我们在shell变量t中有时间,并且我们希望将秒数放入名为seconds的字符串变量中。使用:

t='1M2.34s'
seconds=$(echo "$t" | awk --posix  -F'[Ms]' '{print 60*$1+$2}')