使用time
,我已经获得了我想要的脚本执行时间的一部分,但我需要将其除以一个数字(30),我该怎么做?
....| awk '/^user/ {interest=($2)/(30);print "Time user divide by 30: " interest }'
在 2 美元中,我得到的结果是 0m4.968s,我想将其除以 30 并打印出来。
答案1
该输出0m4.968s
看起来像 Bash 内置的默认格式time
。为了进行有意义的计算,分钟必须转换为秒。但仅更改输出格式会更容易。如果我们只关心用户时间,那么设置TIMEFORMAT=%U
应该以秒为单位。
$ TIMEFORMAT=%U
$ time somecommand
4.968
虽然通过管道传输内置函数的输出time
有点尴尬,因为它想要对整个管道进行计时,但这应该可以:
$ (time somecommand ) 2>&1 | awk '{print $1 / 30}'
0.1656
或者,如果我们必须以原始格式解析时间,将分钟与秒分开,可能是这样的:
$ echo "user 0m4.968s" |
awk '/user/ {split($2, a, "m"); secs = a[1]*60 + a[2]; print secs / 30}'
0.1656