Usando time
, tengo la parte del tiempo de ejecución de un script que quiero pero necesito dividirlo por un número (30), ¿cómo puedo hacerlo?
....| awk '/^user/ {interest=($2)/(30);print "Time user divide by 30: " interest }'
En $2 tengo el resultado 0m4.968s y quiero dividirlo entre 30 e imprimirlo.
Respuesta1
Esa salida 0m4.968s
parece el formato predeterminado para el archivo incorporado de Bash time
. Para hacer cálculos significativos, los minutos tendrían que convertirse a segundos. Pero es más fácil simplemente cambiar el formato de salida. Si solo nos importa el tiempo del usuario, la configuración TIMEFORMAT=%U
debería darnos precisamente eso, en segundos.
$ TIMEFORMAT=%U
$ time somecommand
4.968
Aunque canalizar la salida del incorporado time
es un poco incómodo, ya que quiere cronometrar toda la canalización, esto debería funcionar:
$ (time somecommand ) 2>&1 | awk '{print $1 / 30}'
0.1656
O si tenemos que analizar el tiempo en el formato original, con minutos separados de segundos, tal vez algo como esto:
$ echo "user 0m4.968s" |
awk '/user/ {split($2, a, "m"); secs = a[1]*60 + a[2]; print secs / 30}'
0.1656