Tukubaiオンラインコマンドマニュアル
calclock(1)
【名前】
calclock : 日付と時刻を秒数に変換
【書式】
Usage : calclock [-r] <f1> <f2> <f3> ... <file> Version : Thu Mar 21 21:57:55 JST 2013
【説明】
標準入力または入力ファイル<file>の指定フィールド<f1> <f2> <f3>...の年月日や時間を1970年1月1日0時0分0秒からの秒数に変換して出力する。オプション-rを指定すると逆の変換を実施する。年月日データや時刻データを10進数に置き換えて計算するなどの用途に使用する。
日付や時刻は次のフォーマットである必要がある。
- yyyymmdd
- 年月日(8桁)
- HHMMSS
- 時分秒(6桁)
- yyyymmddHHMMSS
- 年月日時分秒(14桁)
変換後の値を分に直す場合は60、時は3600、日は86400で除算する。
【例1】
$ cat data 0001 0000007 20060201 20060206 117 8335 -145 0001 0000007 20060203 20060206 221 15470 0 0001 0000007 20060205 20060206 85 5950 0 0001 0000007 20060206 20060206 293 20527 -17 0001 0000007 20060207 20060206 445 31150 0 0002 0000007 20060208 20060206 150 11768 -1268 0002 0000007 20060209 20060206 588 41160 0 0002 0000007 20060210 20060206 444 31080 0 $
4フィールド目と3フィールド目を変換し、その間の差分の日数を求めるには次のようにコマンドを実行する。
$ calclock 3 4 - < data |\ tee data2 |\ awk '{print ($6-$4)/86400}' > data3 $ cat data2 0001 0000007 20060201 1138752000 20060206 1139184000 117 8335 -145 0001 0000007 20060203 1138924800 20060206 1139184000 221 15470 0 0001 0000007 20060205 1139097600 20060206 1139184000 85 5950 0 0001 0000007 20060206 1139184000 20060206 1139184000 293 20527 -17 0001 0000007 20060207 1139270400 20060206 1139184000 445 31150 0 0002 0000007 20060208 1139356800 20060206 1139184000 150 11768 -1268 0002 0000007 20060209 1139443200 20060206 1139184000 588 41160 0 0002 0000007 20060210 1139529600 20060206 1139184000 444 31080 0 $ cat data3 5 3 1 0 -1 -2 -3 -4 $
【例2】
-rオプションを使用すると、指定したフィールドの値(1970年1月1日0時0分0秒からの秒数)を通常の年月日時分秒の14桁の表記に変換する。年月日のみのフォーマットにする場合は、出力後awk(1)のsubstr()やself(1)で上8桁を切り出す。
$ cat data 0001 0000007 20060201 117 8335 -145 0001 0000007 20060203 221 15470 0 0001 0000007 20060205 85 5950 0 0001 0000007 20060206 293 20527 -17 0001 0000007 20060207 445 31150 0 0002 0000007 20060208 150 11768 -1268 0002 0000007 20060209 588 41160 0 0002 0000007 20060210 444 31080 0 $
3フィールド目の各日の3日後の日付を求めるには、次のようにコマンドを実行する。
$ calclock 3 data |\ awk '{print $4+86400*3}' |\ tee data2 |\ calclock -r 1 - |\ tee data3 |\ self 2.1.8 > data4 $ cat data2 1138978800 1139151600 1139324400 1139410800 1139497200 1139583600 1139670000 1139756400 $ cat data3 1138978800 20060204000000 1139151600 20060206000000 1139324400 20060208000000 1139410800 20060209000000 1139497200 20060210000000 1139583600 20060211000000 1139670000 20060212000000 1139756400 20060213000000 $ cat data4 20060204 20060206 20060208 20060209 20060210 20060211 20060212 20060213 $