他のシステムからエクスポートしたCSVデータでは、 日付時刻項目にスラッシュ記号やコロン記号が入っていることが多く、 また月日や時が1桁で格納されている場合もある (例:2014/7/18 1:57)。 このような項目をそのままMCMDで扱おうとすると、 並べ替えや範囲指定がうまくいかない。
mdformatコマンドを使うことで、 f=パラメータで指定した項目から、 c=パラメータで指定したフォーマットに従って 年月日・時分秒を抽出し、MCMDで扱うことが容易な 日付型や時刻型 に変換することができる。
mdformat c= f= [-A] [i=] [o=] [-assert_diffSize] [-assert_nullin] [-assert_nullout] [-nfn] [-nfno] [-x] [-q] [tmpPath=] [--help] [--helpl] [--version]
f= |
抽出対象となる項目名リスト(複数項目指定可)を指定する。 |
c= |
文字列のフォーマットを指定する。フォーマットの変換指定文字参照 |
-A |
このオプションにより、指定した項目を置き換えるのではなく、新たに項目が追加される。 |
c=パラメータで利用可能な変換指定文字をTable 3.2に示す。
変換指定文字 |
意味 |
%Y |
西暦を表す数(4桁以内) |
%y |
西暦を表す数(2桁以内) |
%m |
月を表す数字(2桁以内) |
%d |
日を表す数字(2桁以内) |
%H |
時間(2桁以内) |
%M |
分(2桁以内) |
%S |
秒(2桁以内) |
fld項目から日付・時刻を抽出し変換する。 fld項目には「a:年月日:b:時分秒」の形式で日付・時刻が格納されているので、 c=パラメータには「a:%Y%m%d:b:%H%M%S」と指定している。
$ more dat1.csv fld a:20120304:b:121212 a:20101204:b:011309 $ mdformat f=fld c=a:%Y%m%d:b:%H%M%S i=dat1.csv o=rsl1.csv #END# kgdformat c=a:%Y%m%d:b:%H%M%S f=fld i=dat1.csv o=rsl1.csv $ more rsl1.csv fld 20120304121212 20101204011309
fld1項目、fld2項目には「年/月/日」形式で日付が格納されているので、 c=パラメータには「%Y/%m/%d」と指定している。 -Aオプションを使用し、変換結果を新たなf1、f2項目に抽出する。
$ more dat2.csv fld,fld2 2010/11/20,2010/11/21 2010/1/1,2010/1/2 2011/01/01,2010/01/02 2010/1/01,2010/1/02 $ mdformat f=fld:f1,fld2:f2 c=%Y/%m/%d i=dat2.csv -A o=rsl2.csv #END# kgdformat -A c=%Y/%m/%d f=fld:f1,fld2:f2 i=dat2.csv o=rsl2.csv $ more rsl2.csv fld,fld2,f1,f2 2010/11/20,2010/11/21,20101120,20101121 2010/1/1,2010/1/2,20100101,20100102 2011/01/01,2010/01/02,20110101,20100102 2010/1/01,2010/1/02,20100101,20100102
fld項目には「年 月 日 時:分:秒」形式で日付が格納されているので、 c=パラメータには「%Y %m %d %H:%M:%S」と指定している。 しかし形式が異なる行は抽出に失敗している。
$ more dat3.csv fld 2010 11 20 12:34:56 2011 01 01 23:34:56 2010 1 01 123455 $ mdformat f=fld:f1 c='%Y %m %d %H:%M:%S' i=dat3.csv -A o=rsl3.csv #END# kgdformat -A c=%Y %m %d %H:%M:%S f=fld:f1 i=dat3.csv o=rsl3.csv $ more rsl3.csv fld,f1 2010 11 20 12:34:56,20101120123456 , 2011 01 01 23:34:56,20110101233456 2010 1 01 123455,