Как мне получить номер этого выражения?

Как мне получить номер этого выражения?

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

Связанный контент