我希望只有当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
答案 0 :(得分:0)
您只需从hour
格式中提取minute
sec
和hh:mm:ss
,就像这样:
h=$(echo "$9" | cut -d":" -f1)
m=$(echo "$9" | cut -d":" -f2)
s=$(echo "$9" | cut -d":" -f3)
由于您现在已拥有h
m
和s
值,因此可以将其转换为秒数:
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