¿Cómo puedo obtener el número de esta expresión?

¿Cómo puedo obtener el número de esta expresión?

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.968sparece 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=%Udebería darnos precisamente eso, en segundos.

$ TIMEFORMAT=%U
$ time somecommand
4.968

Aunque canalizar la salida del incorporado timees 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

información relacionada