c=パラメータで指定した計算式で計算をおこない、結果が真であれば、その行を選択する。 なおmcalと同じ計算式が利用できるので、詳細はmcalを参照されたい。
msel c= [u=] [-r] [i=] [o=] [-assert_diffSize] [-nfn] [-nfno] [-x] [-q] [tmpPath=] [--help] [--helpl] [--version]
c= |
用意された関数を組み合わせて計算する式を指定する。 |
詳細はmcalを参照。 |
|
o= |
指定の条件に一致する行を出力するファイル名を指定する。 |
u= |
指定の条件に一致しない行を出力するファイル名を指定する。 |
-r |
条件反転 |
選択ではなく削除する。 |
「金額」項目の値が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
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,
真偽は逆転するが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 : 行選択でなく、計算の結果を項目として出力する。