Previous: mcat 併合 Up: コマンドリファレンス Next: mchgstr 文字列の置換 MCMD2
MCMD2 : コマンドリファレンス : mchgnum 数値範囲による置換

3.8 mchgnum 数値範囲による置換

f=パラメータで指定した項目について、R=パラメータで指定する 数値範囲条件とv=パラメータで指定する置換文字列により、項目の値を置換する。

書式

mchgnum f= R= [O=|-F] [v=] [-A] [-r] [i=] [o=] [-assert_diffSize] [-assert_nullin] [-assert_nullout] [-nfn] [-nfno] [-x] [-q] [tmpPath=] [--help] [--helpl] [--version]

パラメータ

f=

ここで指定した項目(複数項目指定可)の数値をR=とv=パラメータで指定した

 

数値範囲リストおよび置換文字列リストに従って置換する。

R=

置換対象となる数値範囲を指定(複数項目指定可)する(1.1,2.5 : 1.1以上2.5未満)。

 

最小値、最大値としてMIN,MAXを使うことができる(MIN,2.5 : 2.5未満)。

O=

範囲外文字列

 

R=パラメータで指定した数値範囲リストのいずれとも合致しない値を

 

置換するときの文字列(指定がなければNULL値となる)を指定する。

-F

範囲外を項目の値として出力

 

R=パラメータで指定した数値範囲リストのいずれとも

 

合致しない値は、その項目の値のまま出力する。

v=

R=パラメータで指定した数値範囲に対応する置換文字列を指定する。

 

R=で指定した値の個数より1つ少い個数でなければならない。

-A

このオプションにより、指定した項目を置き換えるのではなく、新たに項目が追加される。

-r

R=パラメータの範囲を’〜より大きく〜以下’として扱う。

 

例えば、1.1_2.5は「1.1より大きく2.5以下」として扱う。

利用例

例1: 基本例

quantity項目の値が最小以上10未満をlow、 10以上20未満をmiddle、20以上最大未満をhighという文字列に置換する。

$ more dat1.csv
customer,quantity
A,5
B,10
C,15
D,2
E,50
$ mchgnum f=quantity R=MIN,10,20,MAX v=low,middle,high i=dat1.csv o=rsl1.csv
#END# kgchgnum R=MIN,10,20,MAX f=quantity i=dat1.csv o=rsl1.csv v=low,middle,high
$ more rsl1.csv
customer,quantity
A,low
B,middle
C,middle
D,low
E,high

例2: パラメータ範囲にイコールをつける例

quantity項目の値が最小より多く10以下をlow、 10より多く20以下をmiddle、20より多く最大以下をhighという文字列に置換する。

$ mchgnum f=quantity R=MIN,10,20,MAX v=low,middle,high -r i=dat1.csv o=rsl2.csv
#END# kgchgnum -r R=MIN,10,20,MAX f=quantity i=dat1.csv o=rsl2.csv v=low,middle,high
$ more rsl2.csv
customer,quantity
A,low
B,low
C,middle
D,low
E,high

例3: 数値範囲リストに合致しない値を置換

quantity項目の値が10以上20未満をlow、 20以上30未満をmiddle、30以上最大未満をhigh、 数量が10より小さい値はout of rangeという文字列に置換する。

$ mchgnum f=quantity R=10,20,30,MAX v=low,middle,high O="out of range" i=dat1.csv o=rsl3.csv
#END# kgchgnum O=out of range R=10,20,30,MAX f=quantity i=dat1.csv o=rsl3.csv v=low,middle,high
$ more rsl3.csv
customer,quantity
A,out of range
B,low
C,low
D,out of range
E,high

例4: 新たな項目の追加

quantity項目の値が最小以上10未満をlow、 10以上20未満をmiddle、20以上最大未満をhighという文字列に置換し evaluateという項目名で出力する。

$ mchgnum f=quantity:evaluate R=MIN,10,20,MAX v=low,middle,high -A i=dat1.csv o=rsl4.csv
#END# kgchgnum -A R=MIN,10,20,MAX f=quantity:evaluate i=dat1.csv o=rsl4.csv v=low,middle,high
$ more rsl4.csv
customer,quantity,evaluate
A,5,low
B,10,middle
C,15,middle
D,2,low
E,50,high

例5: 範囲外を項目の値として出力

quantity項目の値が10以上20未満をlow、20以上30未満をmiddle、 30以上最大未満をhigh、数量が10より小さい値は置換しないでそのまま出力する。

$ mchgnum f=quantity R=10,20,30,MAX v=low,middle,high -F i=dat1.csv o=rsl5.csv
#END# kgchgnum -F R=10,20,30,MAX f=quantity i=dat1.csv o=rsl5.csv v=low,middle,high
$ more rsl5.csv
customer,quantity
A,5
B,low
C,low
D,2
E,high

関連コマンド

mchgstr : 文字列の置換であればこちら。

msed : 正規表現を使った置換が可能。

Previous: mcat 併合 Up: コマンドリファレンス Next: mchgstr 文字列の置換 MCMD2