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

0

Usando time , tenho a parte do tempo de execução de um script que quero, mas preciso dividi-lo para um número (30). Como posso fazer isso?

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

Em $ 2 eu tenho o resultado 0m4.968s e quero dividir por 30 e imprimi-lo.

    
por cdwcew 01.10.2016 / 18:10

1 resposta

2

Essa saída 0m4.968s parece o formato padrão para o time do Bash. 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, definir TIMEFORMAT=%U deve dar exatamente isso, em segundos.

$ TIMEFORMAT=%U
$ time somecommand
4.968

Embora a saída do co-de time seja um pouco complicada, uma vez que ela deseja cronometrar todo o pipeline, mas isso deve ser feito:

$ (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
    
por 01.10.2016 / 18:36