この式の数値を取得するにはどうすればよいでしょうか?

この式の数値を取得するにはどうすればよいでしょうか?

を使用してtime、スクリプトの実行時間の必要な部分を取得しましたが、それを 1 つの数値 (30) で分割する必要があります。どうすればよいでしょうか?

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

$2 には結果 0m4.968s があり、それを 30 で割って出力します。

答え1

この出力は、0m4.968sBash の組み込みのデフォルト形式のように見えます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

関連情報