アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
現状、以下のログがあるのですが、

<snip>
日時, 通信開始時刻, 通信終了時刻・・・
2008/4/8, 14:00:00.3, 14:10:00.5, ・・・
<snip>

で、AWK(awk -F , )にて時刻差分を取得したいと考えたのですが、
$3-$2の出力結果が"0""-1"になり、表示されません。

うまく時刻差分を取得する方法はないでしょうか。
よろしくお願いいたします。

A 回答 (2件)

基準時点からの経過秒数を返すのや日時の書式を整形するのはあるけど、A-Bのように直接日時を計算するような関数はなかったと思います。



他の言語でもそうですが、時間(文字列)を秒数に変換してから、計算するようにして下さい。

時間表記が「hh:mm:ss」の場合

num = split($2,time,":")
$2 = time[1] * 60 * 60 + time[2] * 60 + time[3]
num = split($3,time,":")
$3 = time[1] * 60 * 60 + time[2] * 60 + time[3]

$3 - $2

で経過秒が得られます。

参考URL:http://www.linux.or.jp/JM/html/GNU_gawk/man1/gaw …
    • good
    • 0
この回答へのお礼

ありがとうございました。大変助かりました。
すこし、タイトルとそれるのですが、

$ gawk -F, -f exam.awk data.txt
92
101.7
60
55.2

計算後の、出力された結果をまとめて合計することってできますでしょうか。

お礼日時:2008/04/14 13:51

変数に時刻差分の合計を入れて、ENDで最後にそれを出力するようにすればいいです。



{
#ファイル読み込んで、差分を求める処理
jikan = $3-$2;
total += jikan; #差分の合計
}

END{
#最後に実行される処理
print "合計 " total " 秒";
}


↓でも一通り読めば、大雑把な使い方は理解出来ます。
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manua …

参考URL:http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manua …
    • good
    • 0
この回答へのお礼

参考にさせていただきます。AWKは独特ですねぇ。
勉強になります。

お礼日時:2008/04/14 17:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!