Replace string in the fields specified in the f= parameter with a string specified in the v= parameter for content that matches the regular expression specified in the c= parameter .
msed c= f= v= [-A] [-g] [-W] [i=] [o=] [-nfn] [-nfno] [-x] [--help] [--version]
f= specify the target list of field name(s) (multiple fields can be specified) for parsing. c= Define the regular expression for string substitution. Refer to usage of regular expressions. v= Specify the string to replace the substring that matches with the regular expression specified in the c= parameter. It is possible to substitute match result with the following methods: $& : Matched string $` : Search for the string from the beginning of the target replacement character string, until a string is matched. $' : After a matched string, substitute target replacement string with matched string till the end. $N : partial string match for the N-th occurrance (N>=1). -A Instead of replacing the specified field, add field as a new column. -g Replace all matches of the regular expression. -W Replace wide character matches of the regular expression.
List of regular expression specified in the c= parameter is shown from Table 3.12 to Table 3.15.
Regular expression |
Description |
Example of pattern |
Example of c=,v= |
Result |
. |
Any character |
abbbcc |
c=. v=X -g |
XXXXXX |
[abc] |
either a,b, or c character |
abbbcc |
c=[ac] v=X -g |
XbbbXX |
[^abc] |
Any character other than a,b,c |
abbbcc |
c=[^ac] v=X -g |
aXXXcc |
[a-z] |
Any character from a to z |
abbbcc |
c=[a-b] v=X -g |
XXXXcc |
[^a-z] |
Any character outside the range of a to z |
abbbcc |
c=[^a-b] v=X -g |
abbbXX |
\t |
Tab character |
|||
\w |
Word string ([0-9a-zA-Z_]) |
ab#cd&ef |
c=\w v=X -g |
XX#XX&XX |
\W |
Characters other than Word string |
ab#cd&ef |
c=\w v=X -g |
abXcdXef |
\s |
Space character ([ \t]) |
ab cd ef |
c=\s v=X -g |
abXcdXef |
\S |
Non-whitespace character |
ab cd ef |
c=\s v=X -g |
XX XX XX |
\d |
Numeric constituent characters ([0-9]) |
ab12c0 |
c=\d v=X -g |
abXXcX |
\D |
Non-numeric constituent characters |
ab12c0 |
c=\d v=X -g |
XX12X0 |
Regular expression |
Description |
Example of pattern |
Example of c=,v= |
Result |
a* |
Zero or more repetition of a |
abbbcc |
c=ab* v=X |
Xcc |
a+ |
Repetition of one or more a |
abbbcc |
c=ab+ v=X |
Xcc |
a? |
Single occurrence of a |
abbbcc |
c=ab? v=X |
Xbbcc |
a{M,N} |
Repetition of a more than M and less than N |
abbbbbcc |
c=ab{3,4} v=X |
Xbcc |
a{M} |
Repetition of a more than M times |
abbbbbcc |
c=ab{3} v=X |
Xbbcc |
a|b |
a or b |
abbbc |
c=(ab)|(bc) v=X |
XbX |
? |
Shortest match after the repeat sign |
abbbc |
c=ab*? v=X |
Xbbbc |
Regular expression |
Description |
Example of pattern |
Example of c=,v= |
Result |
^ |
Match from the beginning |
abac |
c=^a v=X -g |
Xbac |
$ |
Match till the end |
acac |
c=c$ v=X -g |
acaX |
\b |
Match starting characters of string |
aac ba ac bac |
c=\ba v=X -g |
Xac bX Xc bac |
\B |
Match within the string |
aac ba ac bac |
c=\Ba v=X -g |
aXc ba ac bXc |
Regular expression |
Description |
Example of pattern |
Example of c=,v= |
Result |
(expr) |
Grouping |
|||
\1,..,\9 |
Back reference |
abbcababc |
c=(ab)(bc)\1 v=x |
Xabc |
(?=expr) |
Position before matched string at expr |
|||
(?!expr) |
Position before unmatched string at expr |
Replace the 4-digit substring in the zipCode field starting 00 with ####.
$ 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####
Replace the 4-digit substring in the zipCode field starting 00 with ####. Save output in column 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####
Global search using the regular expression - to replace value of 0 in zipCode.
$ 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
Delete fruit from the beginning of the string in item. Note that when first match (^) is specified, the substring within the word grapefruit in the last row is retained.
$ 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
Replaced 1 or more consecutive character strings of b using $& is defined in the v=.
$ 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
When performing a global match, each match is evaluated against the contents defined at 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
Replace the matching first character of b in the character string (prefix) using $`.
$ 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
Replace the matching last character of b in the character string (suffix) using $'.
$ 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 : Use this command to replace with a simple string match.
mcal : Include several functions to handle the regular expression.