を使用してtime
、スクリプトの実行時間の必要な部分を取得しましたが、それを 1 つの数値 (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