Previous: mchgnum 数値範囲による置換 Up: コマンドリファレンス Next: mchkcsv CSVデータのチェック MCMD2
MCMD2 : コマンドリファレンス : mchgstr 文字列の置換

3.9 mchgstr 文字列の置換

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オプションが指定されているときにワイド文字として部分文字列マッチをおこなう。

利用例

例1: 基本例

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

例2: 条件に合致しない値を置換する文字列の指定

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

例3: 新しい項目として出力

-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

例4: 条件外を項目の値として出力

-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

例5: 条件を部分文字列マッチで置換

-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

例6: ワイド文字での部分文字列マッチ

ワイド文字の部分文字列置換をする場合は-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 : 正規表現による置換が可能。

Previous: mchgnum 数値範囲による置換 Up: コマンドリファレンス Next: mchkcsv CSVデータのチェック MCMD2