mdate
名前
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