Используя 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