mdate

提供: Personal Tukubai for Academic
2021年4月5日 (月) 07:22時点におけるPt4a editor (トーク | 投稿記録)による版 (Batch Update)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

名前

mdate : 日付、週、月の処理

書式

使い方とオプション

Usage

DIRECT-MODE

日付

mdate <yyyymmdd>                  : 日付
mdate -y <yyyymmdd>               : 曜日
mdate -w <yyyymmdd>               : 週
mdate <yyyymmdd>/±<dif>           : <dif> 日先の日付
mdate -e <yyyymmdd>/±<dif>        : <dif> 日先までの日付を連続出力
mdate <yyyymmdd1> <yyyymmdd2>     : 日付の差
mdate -e <yyyymmdd1> <yyyymmdd2>  : 日付の範囲を連続出力
mdate -ly <yyyymmdd>              : 前年同日
mdate -lyw <yyyymmdd>             : 前年同曜日(364日前)

週次

mdate <yyyyww>w                   : 週
mdate -d <yyyyww>w                : 日付を7日間出力
mdate <yyyyww>w/±<dif>           : <dif> 週先の週
mdate -e <yyyyww>w/±<dif>        : <dif> 週先までの週を連続出力
mdate <yyyyww1>w <yyyyww2>w       : 週の差
mdate -e <yyyyww1>w <yyyyww2>w    : 週の範囲を連続出力
mdate -ly <yyyyww>w               : 前年週

月次

mdate <yyyymm>m                   : 月
mdate -d <yyyymm>m                : 日付を1カ月分出力
mdate <yyyymm>m/±<dif>           : <dif> 月先の月
mdate -e <yyyymm>m/±<dif>        : <dif> 月先までの月を連続出力
mdate <yyyymm1>m <yyyymm2>m       : 月の差
mdate -e <yyyymm1>m <yyyymm2>m    : 月の範囲を連続出力
mdate -ly <yyyymm>m               : 前年月

FILTER-MODE

日付

mdate -f -y <f>                   : 曜日
mdate -f -w <f>                   : 週
mdate -f <f>/±<dif>              : <dif> 日先の日付
mdate -f -e <f>/±<dif>           : <dif> 日先の日付まで展開
mdate -f <f1> <f2>                : 日付の差
mdate -f -e <f1> <f2>             : 日付間の展開
mdate -f <f1> +<f2>               : 日付の加算
mdate -f -e <f1> +<f2>            : 日付の加算展開
mdate -f -ly <f>                  : 前年日
mdate -f -lyw <f>                 : 前年同曜日

週次

mdate -f -d <f>w                  : 日付を1週分出力
mdate -f <f>w/±<dif>             : <dif> 週先の週
mdate -f -e <f>w ±<dif>          : <dif> 週先の週まで展開
mdate -f <f1>w <f2>w              : 週の差
mdate -f -e <f1>w <f2>w           : 週の展開
mdate -f <f>w +<f2>               : 週の加算
mdate -f -e <f>w +<f2>            : 週の加算展開
mdate -f -ly <f>w                 : 前年週

月次

mdate -f -d <f>m                  : 日付を1カ月分出力
mdate -f <f>m/±<dif>             : <dif> 月先の月
mdate -f -e <f>m ±<dif>          : <dif> 月先の月まで展開
mdate -f <f1>m <f2>m              : 月の差
mdate -f -e <f1>m <f2>m           : 月の展開
mdate -f <f>m +<f2>               : 月の加算
mdate -f -e <f>m +<f2>            : 月の加算展開
mdate -f -ly <f>m                 : 前年月

説明

例(その1)

日付、曜日、月を出力

$ mdate 20090912
20090912                 <-- そのまま出力
$ mdate -y 20090912
6                        <-- 1:月 2:火 3:水 4:木 5:金 6:土 7:日
$ mdate 200909m
200909                   <-- そのまま出力
$ mdate -d 200909m
20090901 20090902 20090903 .... 20090927 20090928 20090929 20090930

例(その2)

<dif> 先の日付、月を出力

$ mdate 20090912/+5
20090917
$ mdate 200909m/+5
201002

例(その3)

<dif> 先までの連続した日付、月を出力

$ mdate -e 20090912/+5
20090912 20090913 20090914 20090915 20090916 20090917
$ mdate -e 20090912/-5 <-- 小さい日から順に出力
20090907 20090908 20090909 20090910 20090911 20090912
$ mdate -e 200909m/+5
200909 200910 200911 200912 201001 201002
$ mdate -e 200909m/-5  <-- 小さい月から順に出力
200904 200905 200906 200907 200908 200909

例(その4)

日付、月の差を出力

$ mdate 20090917 20090912
5
$ mdate 201002m 200909m
5

例(その5)

日付、月の範囲を連続出力

$ mdate -e 20090912 20090917
20090912 20090913 20090914 20090915 20090916 20090917
$ mdate -e 20090917 20090912 <-- 小さい日から順に出力
20090912 20090913 20090914 20090915 20090916 20090917
$ mdate -e 200909m 201002m
200909 200910 200911 200912 201001 201002
$ mdate -e 201002m 200909m   <-- 小さい月から順に出力
200909 200910 200911 200912 201001 201002

例(その6) フィルターモード1

日付、月を挿入

$ cat date_data
A 20090901 B
A 20090902 B
A 20090903 B
$ mdate -f -y 2 date_data <-- 曜日の挿入
A 20090901 2 B
A 20090902 3 B
A 20090903 4 B

$ cat month_data
A 200909 B
A 200910 B
A 200911 B
$ mdate -f -d 2m month_data
A 200909 20090901 ... 20090927 20090928 20090929 20090930 B
A 200910 20091001 ... 20091027 20091028 20091029 20091030 20091031 B
A 200911 20091101 ... 20091127 20091128 20091129 20091130 B

例(その7) フィルターモード2

<dif> 先の日付、月を挿入

$ cat date_data
A 20090901 B
A 20090902 B
A 20090903 B
$ mdate -f 2/+5 date_data
A 20090901 20090906 B
A 20090902 20090907 B
A 20090903 20090908 B
$ mdate -f 2/-5 date_data
A 20090901 20090827 B
A 20090902 20090828 B
A 20090903 20090829 B

$ cat month_data
A 200909 B
A 200910 B
A 200911 B
$ mdate -f 2m/+5 month_data
A 200909 201002 B
A 200910 201003 B
A 200911 201004 B
$ mdate -f 2m/-5 month_data
A 200909 200904 B
A 200910 200905 B
A 200911 200906 B

例(その8) フィルターモード3

<dif> 先までの連続した日付、月を挿入

$ cat date_data
A 20090901 B
A 20090902 B
A 20090903 B
$ mdate -f -e 2/+5 date_data
A 20090901 20090902 20090903 20090904 20090905 20090906 B
A 20090902 20090903 20090904 20090905 20090906 20090907 B
A 20090903 20090904 20090905 20090906 20090907 20090908 B
$ mdate -f -e 2/-5 date_data
A 20090827 20090828 20090829 20090830 20090831 20090901 B
A 20090828 20090829 20090830 20090831 20090901 20090902 B
A 20090829 20090830 20090831 20090901 20090902 20090903 B

$ cat month_data
A 200909 B
A 200910 B
A 200911 B
$ mdate -f -e 2m/+5 month_data
A 200909 200910 200911 200912 201001 201002 B
A 200910 200911 200912 201001 201002 201003 B
A 200911 200912 201001 201002 201003 201004 B
$ mdate -f -e 2m/-5 month_data
A 200904 200905 200906 200907 200908 200909 B
A 200905 200906 200907 200908 200909 200910 B
A 200906 200907 200908 200909 200910 200911 B

例(その9) フィルターモード4

日、月の差を挿入

$ cat date_data2
A 20091001 20090901 B
A 20091003 20090902 B
A 20091005 20090903 B
$ mdate -f 2 3 date_data2
A 20091001 20090901 30 B
A 20091003 20090902 31 B
A 20091005 20090903 32 B

$ cat month_data2
A 200909 200810 B
A 200911 200811 B
A 201001 200812 B
$ mdate -f 2m 3m month_data2
A 200909 200810 11 B
A 200911 200811 12 B
A 201001 200812 13 B

例(その10) フィルターモード5

日、月の差を展開挿入

$ cat date_data2
A 20090905 20090901 B
A 20090904 20090902 B
A 20090906 20090903 B
$ mdate -f -e 2 3 date_data2
A 20090905 20090901 20090901 20090902 20090903 20090904 20090905 B
A 20090904 20090902 20090902 20090903 20090904 B
A 20090906 20090903 20090903 20090904 20090905 20090906 B

$ cat month_data2
A 200901 200810 B
A 200903 200811 B
A 200904 200812 B
$ mdate -f -e 2m 3m month_data2
A 200901 200810 200810 200811 200812 200901 B
A 200903 200811 200811 200812 200901 200902 200903 B
A 200904 200812 200812 200901 200902 200903 200904 B

例(その11) フィルターモード6

日付、月を加算して挿入

$ cat date_data4
A 20090901 1 B
A 20090902 2 B
A 20090903 3 B
$ mdate -f 2 +3 date_data4
A 20090901 1 20090902 B
A 20090902 2 20090904 B
A 20090903 3 20090906 B

$ cat month_data4
A 200911 1 B
A 200912 2 B
A 201001 3 B
$ mdate -f 2m +3 month_data4
A 200911 1 200912 B
A 200912 2 201002 B
A 201001 3 201004 B

例(その12) フィルターモード7

日付、月を加算展開して挿入

$ cat date_data4
A 20090901 1 B
A 20090902 2 B
A 20090903 3 B
$ mdate -f -e 2 +3 date_data4
A 20090901 1 20090901 20090902 B
A 20090902 2 20090902 20090903 20090904 B
A 20090903 3 20090903 20090904 20090905 20090906 B

$ cat month_data4
A 200911 1 B
A 200912 2 B
A 201001 3 B
$ mdate -f -e 2m +3 month_data4
A 200911 1 200911 200912 B
A 200912 2 200912 201001 201002 B
A 201001 3 201001 201002 201003 201004 B

<週機能について>

MDWEEKTABLE は週番号を管理するテーブルで、日付と週番号からなる2フィールドのファイルです。日付は連続している必要が有り、7行で1週間分になります。週番号は1〜7桁の任意の整数です。すべての週番号が同じ桁数でなければなりませんが、連続している必要はなく。昇順でなくても構いません。

MDWEEKTABLE.SAMPLE がサンプルとして提供されています。このファイルは「月曜開始、3月1日が含まれる週を第1週」という条件で作成されたものです。会社や業種によって条件が違うので注意してください。

$ head ~/TBL/MDWEEKTABLE
20050228 200501
20050301 200501
20050302 200501
20050303 200501
20050304 200501
20050305 200501
20050306 200501
20050307 200502
20050308 200502
20050309 200502

例(その13)

週番号を表示

$ mdate 200901w
200901                   <-- そのまま出力
$ mdate -d 200901w
20090223 20090224 20090225 20090226 20090227 20090228 20090301

例(その14)

週の計算

$ mdate 200907w/+5
200912

例(その15)

<dif>先までの連続した週番号を表示

$ mdate -e 200909w/+5
200909 200910 200911 200912 200913 200914
$ mdate -e 200909w/-5  <-- 小さい週から順に出力
200904 200905 200906 200907 200908 200909

例(その16)

週の差を出力

$ mdate 200909w 200902w
7

例(その17)

週の範囲を連続出力

$ mdate -e 200909w 200907w
200907 200908 200909
$ mdate -e 200907w 200909w   <-- 小さい週から順に出力
200907 200908 200909

フィルターモードも同様に動作します。

参考

<yyyymmdd> には、“today”、“yesterday”、“yday”、“tomorrow”、“nday” を指定することもできます。

<yyyyww> には、“thisweek” を指定することもできます。

<yyyymm> には、“thismonth” を指定することもできます。

備考

週の機能は MDWEEKTABLE が存在するときのみ動作します。

Version and Edition

Version : Thu Jan 14 21:51:32 JST 2021

Edition : 2


© 2021 Universal Shell Programming Laboratory site