f=パラメータで指定した項目について、 c=パラメータで指定した正規表現に一致する内容を v=パラメータ指定した文字列で置換する。
msed c= f= v= [-A] [-g] [-W] [i=] [o=] [-assert_diffSize] [-assert_nullin] [-assert_nullout] [-nfn] [-nfno] [-x] [-q] [tmpPath=] [--help] [--helpl] [--version]
f= |
置換対象となる項目名リスト(複数項目指定可)を指定する。 |
c= |
置換したい文字列についての正規表現を指定する。 |
正規表現の使用方法参照 |
|
v= |
c=パラメータで指定した正規表現にマッチした部分文字列が、 |
ここで指定した文字列に置換される。 |
|
マッチ結果を用いた置換も可能で、指定方法は以下の通り。 |
|
$& : マッチした文字列 |
|
$` : 置換対象文字列の先頭から、マッチした文字列の直前までの文字列 |
|
$' : マッチした文字列の直後から、置換対象文字列の最後までの文字列 |
|
$N : N番目の部分マッチ文字列(N>=1) |
|
-A |
このオプションにより、指定した項目を置き換えるのではなく、 |
新たに項目が追加される。 |
|
-g |
正規表現にマッチする全ての部分文字列を置換対象とする。 |
-W |
ワイド文字として正規表現による文字列置換を行う。 |
c=パラメータで指定する正規表現をTable 3.12からTable 3.15に示す。
正規表現 |
意味 |
値例 |
c=,v=例 |
結果例 |
. |
任意の一文字 |
abbbcc |
c=. v=X -g |
XXXXXX |
[abc] |
a,b,cのいずれか一文字 |
abbbcc |
c=[ac] v=X -g |
XbbbXX |
[^abc] |
a,b,c以外の任意の一文字 |
abbbcc |
c=[^ac] v=X -g |
aXXXcc |
[a-z] |
aからzの範囲の任意の一文字 |
abbbcc |
c=[a-b] v=X -g |
XXXXcc |
[^a-z] |
aからzの範囲外の任意の一文字 |
abbbcc |
c=[^a-b] v=X -g |
abbbXX |
\t |
タブ文字 |
|||
\w |
単語構成文字([0-9a-zA-Z_]) |
ab#cd&ef |
c=\w v=X -g |
XX#XX&XX |
\W |
単語構成文字以外 |
ab#cd&ef |
c=\w v=X -g |
abXcdXef |
\s |
空白文字([ \t]) |
ab cd ef |
c=\s v=X -g |
abXcdXef |
\S |
空白文字以外 |
ab cd ef |
c=\s v=X -g |
XX XX XX |
\d |
数字構成文字文字([0-9]) |
ab12c0 |
c=\d v=X -g |
abXXcX |
\D |
数字構成文字文字以外 |
ab12c0 |
c=\d v=X -g |
XX12X0 |
正規表現 |
意味 |
値例 |
c=,v=例 |
結果例 |
a* |
aの0個以上の繰り返し |
abbbcc |
c=ab* v=X |
Xcc |
a+ |
aの1個以上の繰り返し |
abbbcc |
c=ab+ v=X |
Xcc |
a? |
aの0個または1個の出現 |
abbbcc |
c=ab? v=X |
Xbbcc |
a{M,N} |
aのM個以上N個以下の繰り返し |
abbbbbcc |
c=ab{3,4} v=X |
Xbcc |
a{M} |
aのM個以上の繰り返し |
abbbbbcc |
c=ab{3} v=X |
Xbbcc |
a|b |
aまたはb |
abbbc |
c=(ab)|(bc) v=X |
XbX |
? |
繰り返し記号の後ろに付けて最短マッチ |
abbbc |
c=ab*? v=X |
Xbbbc |
正規表現 |
意味 |
値例 |
c=,v=例 |
結果例 |
^ |
行頭にマッチする |
abac |
c=^a v=X -g |
Xbac |
$ |
行末にマッチする |
acac |
c=c$ v=X -g |
acaX |
\b |
単語頭または単語末にマッチ |
aac ba ac bac |
c=\ba v=X -g |
Xac bX Xc bac |
\B |
単語中にマッチ |
aac ba ac bac |
c=\Ba v=X -g |
aXc ba ac bXc |
正規表現 |
意味 |
値例 |
c=,v=例 |
結果例 |
(expr) |
グループ化 |
|||
\1,..,\9 |
後方参照 |
abbcababc |
c=(ab)(bc)\1 v=x |
Xabc |
(?=expr) |
exprにマッチする直前位置にマッチ |
|||
(?!expr) |
exprにマッチしない直前位置にマッチ |
zipCode項目の値が00から始まる4桁文字列を####に置換する。
$ more dat1.csv customer,zipCode A,6230041 B,6240053 C,6330032 D,6230087 E,6530095 $ msed f=zipCode c=00.. v=#### i=dat1.csv o=rsl1.csv #END# kgsed c=00.. f=zipCode i=dat1.csv o=rsl1.csv v=#### $ more rsl1.csv customer,zipCode A,623#### B,624#### C,633#### D,623#### E,653####
zipCodeの値が00から始まる4桁の数字を####に置換し、zipCode4という項目名で出力する。
$ msed f=zipCode:zipCode4 c='00\d\d' v=#### i=dat1.csv o=rsl2.csv #END# kgsed c=00\d\d f=zipCode:zipCode4 i=dat1.csv o=rsl2.csv v=#### $ more rsl2.csv customer,zipCode4 A,623#### B,624#### C,633#### D,623#### E,653####
zipCodeの値が0を全て-にグローバル置換する。
$ msed f=zipCode c=0 v=- -g i=dat1.csv o=rsl3.csv #END# kgsed -g c=0 f=zipCode i=dat1.csv o=rsl3.csv v=- $ more rsl3.csv customer,zipCode A,623--41 B,624--53 C,633--32 D,623--87 E,653--95
itemの先頭のfruitを削除する。 先頭一致(^)を指定しているので、最後の行のgrapefruitは削除されていないことに注意する。
$ more dat2.csv item,price fruit:apple,100 fruit:peach,250 fruit:pineapple,300 fruit:orange,450 fruit:grapefruit,500 $ msed f=item c='^fruit' v= -g i=dat2.csv o=rsl4.csv #END# kgsed -g c=^fruit f=item i=dat2.csv o=rsl4.csv v= $ more rsl4.csv item,price :apple,100 :peach,250 :pineapple,300 :orange,450 :grapefruit,500
v=の中で$&を用いれば、マッチした文字列(連続したb)に置き換わる。
$ more dat3.csv str1 abc abbc ac $ msed f=str1 c='b+' v='#$&#' i=dat3.csv o=rsl5.csv #END# kgsed c=b+ f=str1 i=dat3.csv o=rsl5.csv v=#$&# $ more rsl5.csv str1 a#b#c a#bb#c ac
グローバルマッチにすると、個々のマッチ毎にv=の内容が評価される。
$ msed f=str1 c=b v='#$&#' -g i=dat3.csv o=rsl6.csv #END# kgsed -g c=b f=str1 i=dat3.csv o=rsl6.csv v=#$&# $ more rsl6.csv str1 a#b#c a#b##b#c ac
$`にて、マッチした箇所の前の文字列(プレフィックス)に置換される。
$ msed f=str1 c=b v='#$`#' i=dat3.csv o=rsl7.csv #END# kgsed c=b f=str1 i=dat3.csv o=rsl7.csv v=#$`# $ more rsl7.csv str1 a#a#c a#a#bc ac
$'にて、マッチした箇所の後の文字列(サフィックス)に置換される。
$ msed f=str1 c=b v="#$'#" i=dat3.csv o=rsl8.csv #END# kgsed c=b f=str1 i=dat3.csv o=rsl8.csv v=#$'# $ more rsl8.csv str1 a#c#c a#bc#bc ac
mchgstr : 単純な文字列マッチによる置換であればこのコマンドを利用する。
mcal : 正規表現を扱う関数がいくつか用意されている。