Tukubaiオンラインコマンドマニュアル - calclock(1)

calclock(1)

【名前】

calclock : 日付と時刻を秒数に変換

【書式】

Usage   : calclock [-r] [<f1> <f2> <f3> ...] <file>
Version : Sat Aug 20 22:29:15 JST 2022
Edition : 1

【説明】

標準入力または入力ファイル<file>の指定フィールド<f1> <f2> <f3>...の年月日や時間を1970年1月1日0時0分0秒からの秒数に変換して出力する。オプション-rを指定すると逆の変換を実施する。年月日データや時刻データを10進数に置き換えて計算するなどの用途に使用する。<file>として-を指定すると標準入力を使用する。

日付や時刻は次のフォーマットである必要がある。

yyyymmdd
    年月日(8桁)
HHMMSS
    時分秒(6桁)
yyyymmddHHMMSS
    年月日時分秒(14桁)

変換後の値を分に直す場合は60、時は3600、日は86400で除算する。

【注意】

入力ファイル<file>は省略できない フィールド指定<f1> <f2> <f3>... を省略すると全フィールド指定となる。 フィールド指定<f1> <f2> <f3>... に0があると全フィールド指定となる。 このとき同時に0以外のフィールド指定があってもそれらは無視される。

【例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
$

【関連項目】

dayslash(1)mdate(1)yobi(1)

Last modified: 2022-08-24 10:22:04