Previous: msed 正規表現による文字列置換 Up: コマンドリファレンス Next: mselnum 数値範囲による行選択 MCMD2
MCMD2 : コマンドリファレンス : msel 条件式による行選択

3.47 msel 条件式による行選択

c=パラメータで指定した計算式で計算をおこない、結果が真であれば、その行を選択する。 なおmcalと同じ計算式が利用できるので、詳細はmcalを参照されたい。

書式

msel c= [u=] [-r] [i=] [o=] [-assert_diffSize] [-nfn] [-nfno] [-x] [-q] [tmpPath=] [--help] [--helpl] [--version]

パラメータ

c=

用意された関数を組み合わせて計算する式を指定する。

 

詳細はmcalを参照。

o=

指定の条件に一致する行を出力するファイル名を指定する。

u=

指定の条件に一致しない行を出力するファイル名を指定する。

-r

条件反転

 

選択ではなく削除する。

利用例

例1: 基本例

「金額」項目の値が40より大きい行を選択する。 それ以外のデータはunmatch1.csvに出力する。

$ more dat1.csv
顧客,数量,金額
A,1,10
A,2,20
B,1,30
B,3,40
B,1,50
$ msel c='${金額}>40' u=unmatch1.csv i=dat1.csv o=match1.csv
#END# kgsel c=${金額}>40 i=dat1.csv o=match1.csv u=unmatch1.csv
$ more match1.csv
顧客,数量,金額
B,1,50
$ more unmatch1.csv
顧客,数量,金額
A,1,10
A,2,20
B,1,30
B,3,40

例2: NULL値の選択規制

mselコマンドではc=で与えられた式を評価した結果がNULL値の場合その行は選択されない。 また、アンマッチ出力ファイルがu=によって指定されていれば、そのファイルに出力される。 以下の例では項目bに-1、NULL値、1を持つ3行のデータについて、0より大きい行を選択しているが、 NULL値を含む行はアンマッチ出力ファイルへと出力される。

$ more dat2.csv
a,b
A,-1
B,
C,1
$ msel c='${b}>0' i=dat2.csv o=match2.csv u=unmatch2.csv
#END# kgsel c=${b}>0 i=dat2.csv o=match2.csv u=unmatch2.csv
$ more match2.csv
a,b
C,1
$ more unmatch2.csv
a,b
A,-1
B,

例3: -rオプション指定

真偽は逆転するがNULL値の評価に変わりはない。 すなわちNULL値の行は選択されない。 以下の例では、上の例と同様のデータおよび選択条件で-rをつけている。 真偽の選択条件は逆転しているが、NULL値を含む行は上記の例と同様にアンマッチファイルへと出力されていることがわかる。

$ msel -r c='${b}>0' i=dat2.csv o=match3.csv u=unmatch3.csv
#END# kgsel -r c=${b}>0 i=dat2.csv o=match3.csv u=unmatch3.csv
$ more match3.csv
a,b
A,-1
$ more unmatch3.csv
a,b
B,
C,1

関連コマンド

mselnum : 簡単な数値範囲による行選択はこちら。

mselstr : 簡単な文字列マッチによる行選択はこちら。

mcal : 行選択でなく、計算の結果を項目として出力する。

Previous: msed 正規表現による文字列置換 Up: コマンドリファレンス Next: mselnum 数値範囲による行選択 MCMD2