我怎样才能得到这个表达式的编号?

我怎样才能得到这个表达式的编号?

使用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

相关内容