Como posso obter o número desta expressão?

Como posso obter o número desta expressão?

Usando time, consegui a parte do tempo de execução de um script que desejo, mas preciso dividir por um número (30). Como posso fazer isso?

....| awk '/^user/ {interest=($2)/(30);print "Time user divide by 30: " interest }'

Em $2 tenho o resultado 0m4.968s e quero dividir por 30 e imprimir.

Responder1

Essa saída 0m4.968sse parece com o formato padrão do builtin do Bash time. Para fazer cálculos significativos, os minutos teriam que ser convertidos em segundos. Mas é mais fácil apenas alterar o formato de saída. Se nos preocuparmos apenas com o tempo do usuário, a configuração TIMEFORMAT=%Udeverá fornecer exatamente isso, em segundos.

$ TIMEFORMAT=%U
$ time somecommand
4.968

Embora canalizar a saída do builtin timeseja um pouco estranho, já que ele deseja cronometrar todo o pipeline, mas isso deve servir:

$ (time somecommand ) 2>&1 | awk '{print $1 / 30}'
0.1656

Ou se tivermos que analisar a hora no formato original, com minutos separados de segundos, talvez algo assim:

$ echo "user 0m4.968s" | 
   awk '/user/ {split($2, a, "m"); secs = a[1]*60 + a[2]; print secs / 30}'
0.1656

informação relacionada