f=パラメータで指定した項目について、 c=パラメータで指定した置換条件で文字列を置換する。
mchgstr c= f= [O=] [-A] [-F] [-sub] [-W] [i=] [o=] [-assert_diffSize] [-assert_nullin] [-assert_nullout] [-nfn] [-nfno] [-x] [-q] [tmpPath=] [--help] [--helpl] [--version]
c= |
置換対象となる文字列と置換文字列を指定する。 |
f= |
ここで指定した項目(複数項目指定可)の文字列をc=パラメータで指定した置換条件リストに従って置換する。 |
O= |
c=パラメータで指定した置換条件リストのいずれとも合致しない値を |
置換するときの文字列(指定がなければNULL値となる)を指定する。 |
|
-A |
このオプションにより、指定した項目を置き換えるのではなく、 新たに項目が追加される。 |
-F |
c=パラメータで指定した置換条件リストのいずれとも合致しない値は、 |
その項目の値のまま出力する。 |
|
-sub |
検索を完全一致ではなく部分文字列マッチで比較する |
すなわち、f=パラメータで指定した項目の値に、 |
|
c=パラメータで指定した置換条件で文字列を置換する。 |
|
-W |
-subオプションが指定されているときにワイド文字として部分文字列マッチをおこなう。 |
itemの値が "01"を"A"に、 "03"を"B"に、 "04"を"C"に置換する。 その他はNULL値として出力する。
$ more dat1.csv id,item 1,01 2,02 3,03 4,04 5,05 $ mchgstr f=item c=01:A,03:B,05:C i=dat1.csv o=rsl1.csv #END# kgchgstr c=01:A,03:B,05:C f=item i=dat1.csv o=rsl1.csv $ more rsl1.csv id,item 1,A 2, 3,B 4, 5,C
O=パラメータを指定することで、 置換条件に合致しない場合は"out of range"という文字列に置換して出力する。
$ mchgstr f=item c=01:A,03:B,05:C O="out of range" i=dat1.csv o=rsl2.csv #END# kgchgstr O=out of range c=01:A,03:B,05:C f=item i=dat1.csv o=rsl2.csv $ more rsl2.csv id,item 1,A 2,out of range 3,B 4,out of range 5,C
-Aオプションを付けることで、新しい項目(item info)として出力する。
$ mchgstr f=item:"item info" c=01:A,03:B,05:C O="out of range" -A i=dat1.csv o=rsl3.csv #END# kgchgstr -A O=out of range c=01:A,03:B,05:C f=item:item info i=dat1.csv o=rsl3.csv $ more rsl3.csv id,item,item info 1,01,A 2,02,out of range 3,03,B 4,04,out of range 5,05,C
-Fオプションを付けることで、 置換条件に合致しない場合は、元の値をそのまま出力する。
$ mchgstr f=item c=01:A,03:B,05:C -F i=dat1.csv o=rsl4.csv #END# kgchgstr -F c=01:A,03:B,05:C f=item i=dat1.csv o=rsl4.csv $ more rsl4.csv id,item 1,A 2,02 3,B 4,04 5,C
-subオプションをつけることで、部分文字列の置換となる。 以下の例では、item項目に文字列"01"が含まれていれば、それを"A"に置換する。
$ more dat2.csv id,item 1,0111 2,0121 3,0231 4,0241 5,0151 $ mchgstr f=item c=01:A -sub i=dat2.csv o=rsl5.csv #END# kgchgstr -sub c=01:A f=item i=dat2.csv o=rsl5.csv $ more rsl5.csv id,item 1,A11 2,A21 3, 4, 5,A51
ワイド文字の部分文字列置換をする場合は-Wオプションを用いる。 ただし、UTF-8エンコーディングを用いているのであれば-Wをつけなくても正しく動作する。 詳しくは「マルチバイト文字」の節を参照されたい。
$ more dat3.csv id,city 1,奈良市 2,下市町 3,十津川村 4,五條市 5,山添村 $ mchgstr f=city c=市:01,町:02,村:02 -sub -W i=dat3.csv o=rsl6.csv #END# kgchgstr -W -sub c=市:01,町:02,村:02 f=city i=dat3.csv o=rsl6.csv $ more rsl6.csv id,city 1,奈良01 2,下0102 3,十津川02 4,五條01 5,山添02
mchgnum : 数値範囲による置換ならばこちら。
msed : 正規表現による置換が可能。