質問: awkにて時刻差分を取得したい お世話になります。 現状、以下のログがあるのですが、 <snip> 日時, 通信開始時刻, 通信終了時刻・・・ 2008/4/8, 14:00:00.3, 14:10:00.5, ・・・ <snip> で、awk(awk -f , )にて時刻差分を取得したいと考えたのですが、 $3-$2の出力結果が"0""-1"になり、表示されません。 うまく時刻差分を取得する方法はないでしょうか。 よろしくお願いいたします。
回答: 基準時点からの経過秒数を返すのや日時の書式を整形するのはあるけど、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/gawk.1.html