星号:如何将时间转换为秒

时间:2015-06-10 13:06:49

标签: bash shell time asterisk duration

我希望只有当9美元大于1小时时才打印任何结果 我该如何将其转换为秒? 所以我可以使用3600秒进行检查。

$ 9 =通话时间00:00:00

asterisk -rx "core show channels verbose" | awk '$9 > "01:00:00"' | awk '$6 == "Dial"' | wc -l > test.txt

2 个答案:

答案 0 :(得分:0)

您只需从hour格式中提取minute sechh:mm:ss,就像这样:

h=$(echo "$9" | cut -d":" -f1)
m=$(echo "$9" | cut -d":" -f2)
s=$(echo "$9" | cut -d":" -f3)

由于您现在已拥有h ms值,因此可以将其转换为秒数:

totalsec=$(echo "$h*3600+$m*60+$s"|bc)
如果您只需要检查几个小时,请

或使用$h

答案 1 :(得分:0)

正如有人提到的,最简单的方法是检查时间的前两位是不是" 00"。像这样:

asterisk -rx "core show channels verbose" | awk '$9 !~ /00:..:../ && $6 == "Dial"' | wc -l

这意味着它将匹配并记录" 01:00:00"这可能不是你想要的:-(。匹配" $ 9大于或等于一小时"。

这将匹配您的"大于"条件:

asterisk -rx "core show channels verbose" | awk '$9 !~ /00:..:../ && $9 != "01:00:00" && $6 == "Dial"' | wc -l