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
$