• ベストアンサー

時間を計算する方法

ログなどに実行した時間と終了した時間が表示される のですが、実行にかかった時間を計算したいと考えております。 例: 10:22:01.012,10:23:10.234 ^^^^^^^^^^^^ ^^^^^^^^^^^^ ↑実行時間  ↑終了時間 上記のようなログが表示される場合で、実行にかかった 時間を計算する方法はないでしょうか? ずっと考えていたのですが、良い方法が思いつきません。perlとかでは出来そうですが、solarisで行いたいと考えています。 ご教授頂ければ幸いです。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.2

ログが複数行あるとして、 開始時刻,終了時刻 テキスト を 開始時刻,終了時刻,経過時間 テキスト に書き換えることを考えるとします。かなり面倒ですが、↓ #! /bin/sh IFS=" :.," while read H1 M1 S1 T1 H2 M2 S2 T2 TEXT do X=`expr $H1 \* 3600000 - $M1 \* 60000 - $S1 \* 1000 + $T1` Y=`expr $H2 \* 3600000 + $M2 \* 60000 + $S2 \* 1000 + $T2` if test $X -gt $Y ;then Y=`expr $Y + 86400000`;fi W=`expr $Y - $X` T=`expr $W % 1000` W=`expr $W / 1000` S=`expr $W % 60` W=`expr $W / 60` M=`expr $W % 60` H=`expr $W / 60` T=`expr 00$T : '.*\(...\)'` S=`expr 0$S : '.*\(..\)'` M=`expr 0$M : '.*\(..\)'` H=`expr 0$H : '.*\(..\)'` IFS=" " echo "$H1:$M1:$S1.$T1,$H2:$M2:$S2.$T2,$H:$M:$S.$T $TEXT" IFS=" :.," done < logfile.txt >logfileout.txt

sanpei01
質問者

お礼

ご回答ありがとうございます。 やはりコマンド一発で実行するのは無理っぽいですね。 簡単な処理を複数組み合わせてシェルを作成するの方法が一番よいですね。 ありがとうございます。大変参考になりました。

その他の回答 (1)

  • tee3
  • ベストアンサー率23% (3/13)
回答No.1

簡単なコマンドしか知らないので、シンプルなコマンドで単純に考えました。 1秒=1000ミリ秒 1分=60秒=60000ミリ秒 1時間=60分=3600秒=3600000ミリ秒 ログファイル(time.log)内には、質問文内の例にあった「開始」「終了」時間のみが記述されているとしました。 「cut」コマンドで開始・終了の区切り文字を「,」、時・分・秒の区切り文字を「:」、ミリ秒の区切り文字を「.」としました。 ちなみに、23時→0時の日付またがりは考慮していません。 以下、Cシェル #!/bin/csh #-------------------------------------------- # ログファイルより、開始・終了時間を取り出す #-------------------------------------------- set START = `cat time.log | cut -d',' -f1` set END = `cat time.log | cut -d',' -f2` #-------------------------------------------- # 取り出した開始時間を、時・分・秒・ミリ秒に切り分ける #-------------------------------------------- set START_HH = `echo ${START} | cut -d':' -f1` set START_MM = `echo ${START} | cut -d':' -f2` set START_SS = `echo ${START} | cut -d':' -f3 | cut -d'.' -f1` set START_MS = `echo ${START} | cut -d'.' -f2` #-------------------------------------------- # 切り分けた時・分・秒・ミリ秒をすべてミリ秒に置き換える #-------------------------------------------- @ START_HH_MS = ${START_HH} \* 3600000 @ START_MM_MS = ${START_MM} \* 60000 @ START_SS_MS = ${START_SS} \* 1000 #-------------------------------------------- # 置き換えた時・分・秒・ミリ秒の和をもとめる #-------------------------------------------- @ START_TOTAL = ${START_HH_MS} + ${START_MM_MS} + ${START_SS_MS} + ${START_MS} ~~ END_TOTAL も同様に ~~ #-------------------------------------------- # 終了時間-開始時間で、実行時間をもとめる #-------------------------------------------- @ ELAPS_MS = ${END_TOTAL} - ${START_TOTAL} ~~ これで実行時間のミリ秒がでる ~~ ~~ 秒単位にする場合は、更に1000で割る ~~ どうでしょうか?理屈が簡単な分、処理が多いのが難点です。実はコマンド1発で答えがでたりするかも…。でも、自分の持っている知識だと、この回答が精一杯です。

sanpei01
質問者

お礼

ご回答ありがとうございます。 この方法でやれば、処理が簡単なのですぐ作成できそうです。大変参考になりました。ありがとうございます。

関連するQ&A

  • 時間の計算について

    PERLにて、以下のようなことがしたいと考えています。 $date1="12:00" $date2="12:45" $date2 - $date1 = 45(分) 上記の感じで2つの時刻の差分時間を計算したいと考えているのでが、何か良い方法はないでしょうか? 最初は時刻を「(時間×60)+○○分」に変換して引き算すれば良いかと考えていましたが、その場合だと、日をまたぐ(23:00から2:00)みたいな計算が出来るのかな?と思いました。 何か良い方法があればご教授頂ければ幸いです。 それでは、どうぞよろしくお願い致します。

  • エクセルでの時間の計算方法について

    時間の計算方法 エクセルで時間の計算をしたいと思っていますが、その方法をご教授いただけると 幸いです。 たとえば    30:40 +  20:20 ______________________ 合計 51:00 平均 26:00 こんな計算をしたいのですがまず30:40といった表示ができません。 単純に計算するだけではなく、表示上も【30:40】とか【26:00】といった感じで 24時間を越える表示をさせることができればよいと思っております。 以上よろしくお願いします

  • Excelでの時間計算

    お世話になります。Excelでの時間計算についてご教授願います。 例えば作業時間の「延べ時間」を算出したい場合、 「作業員数」×「作業時間」=「作業延べ時間」ということになろうかと思います。 しかし 作業員9人×作業時間10時間とすると表示は「3:00」と なってしまいます。 シリアル値の置き換えの問題だと思うのですが、 要は上記の計算をした場合「90:00」と表示させたいのです。 なにか良い方法はないでしょうか。よろしくお願いいたしますm(_ _)m

  • 時間の計算について

    実働時間の計算ですが、 10:00~18:30働いたとした場合8時間30分の実働ですが、実働時間を8.5と表示する場合の計算式を教えてください。 例)9時間15分 →9.25   7時間45分 →7.75 よろしくお願いします。

  • 対数の計算

    (lod2)^3+(log5)^3+3(log2log5)=?? 上記の計算方法をご教授ください^^ よろしくお願いします

  • エクセルで時間を切り上げ計算したいのですが分かりません。

    質問します。エクセルでタイムカード等の時間を計算する場合ですが、例えば20分に終了した場合30分に切り上げ、19分に終了した場合00すなわち19分切り捨てにする関数等はありますか? 17:19分の場合→17:00と切捨て 17:20分の場合→17:30と切上げる場合の関数もしくは方法をご教授下さい。よろしくお願いします。

  • Excel 日付をまたぐ労働時間の計算方法

    今回、労働時間の計算方法とその合計時間をExcelで作成したいと思ったのですが 合計時間が表示されません。 教えていただけたら嬉しいです。 お願いします。 A2セル 日付        2017/11/1 B2セル 開始時間      8:00 C2セル 終了日付及び時間  2017/11/2 10:00 D2セル 休憩時間      6:00 E2セル 労働時間      =C2-B2+IF(B2>=C2,1)-D2               20時間の計算となります。 上記の表を作成し日々の労働時間の合計をSUMを使って計算すると全然違う数字になります。 今月の労働合計時間を表すにはどのようにすればいいでしょうか? 合計時間を表記するセルには 書式設定→ユーザー定義→[h]:mm を用いて表記しています。 どなたか詳しい方よりご教授いただければ幸いです。 宜しくお願い致します

  • エクセルでの時間計算(2時間30分→2.5と表示するには?)

    開始時刻15:00、終了時刻17:30の場合の所要時間の計算ですが、15分=0.25で表示したいのです。この計算式を教えて下さい。 また、15分=0.25の場合、10分はいくつになるのですか?この計算方法も教えて下さい。 おバカでお恥ずかしいのですが、宜しくお願いします。

  • Excel2003 利用時間の計算

    初心者です。よろしくお願いします。 機器貸し出しの時間計算で行き詰っております。 前提条件 ・時間区分が2区分あり、(通常時間)7:00~22:00と(深夜時間)22:00~翌7:00です。 ・貸し出し期間は2日間(1泊)迄です。(当日返却もあり) D列に貸し出し開始時間 例)6:00 E列に貸し出し終了時間 例)34:00(翌10:00) 上記2つの時間を入力すると、 G列に通常時間帯 例)19:00(19時間) H列に深夜時間帯 例)9:00(9時間) 時間帯毎の使用時間を表示させるためにはどのような計算式になるのでしょうか? アドバイスお願い致します。

  • シェルスクリプトで実行したコマンドをタイムアウトさせる方法

    シェルスクリプト超初心者です。 ログファイルを『tail -f』で開き、その内容を一時的な テキストファイルにリダイレクトで書き出します。 その処理を、一定時間経過後に自動的に終了する。 といった内容のシェルスクリプトを作成したいと思っています。 しかし、「tail -f」を実行したプロセスを一定時間経過後に どういう風に終了させればよいのかよく分かりません。 実行したプロセスを一定時間経過後に終了させるような 方法が何かありませんか? ちなみに実行環境は、Solaris9です。 【コマンド例】 tail -f ./"ログファイル" > ./temp.txt かなり、初歩的な質問で申し訳ありませんが 宜しくお願いします。