我想找到一种方法可以轻松地将持续时间(而不是从1970年等时间等)转换为持续时间(以秒为单位)。请在bash中有一个简单快捷的方法吗? 我试过“日期”和%s等,但它总是返回自1970年以来的时间,我只想要一段时间。
谢谢!
答案 0 :(得分:4)
awk
是否算作bash?
$ echo "05:42:32" | awk -F':' '{print $1 * 60 * 60 + $2 * 60 + $3}'
20552
如果您还需要解析没有时间的持续时间:
awk -F':' '{if (NF == 2) {print $1 * 60 + $2} else {print $1 * 60 * 60 + $2 * 60 + $3}}'
答案 1 :(得分:3)
您可以使用IFS将时间分为小时,分钟和秒。
#! /bin/bash
to_seconds () {
IFS=: read h m s <<< "$1"
echo $(( 10#$h * 3600 + 10#$m * 60 + 10#$s ))
}
duration=05:42:32
to_seconds $duration
答案 2 :(得分:2)
帕维尔的答案几乎就是标准解决方案。
只是为了好玩,你也可以这样做(sed + bc)
:
kent$ echo "05:42:32"|sed 's/:/*60+/g;s/*60/&&/'|bc
20552