The match and split operators provide enough power that with some effort, it is possible to find regular expression matches, modify the matched text, and create a modified string as output. However, this is a common operation when using regular expressions for text processing, so the subst operator is also provided as a more convenient interface for the most common types of substitution.
Suppose that a list of email addresses needs to be converted from one format to another.. The following snippet does such a conversion:
`Jason Evans (jasone@canonware.com) Jason O. Evans ( jasone@canonware.com ) ' `(\w[A-Za-z. ]*\w) \(\s*([^\s]+)\s*\)' `"\1" <\2>' <$g true> subst pop stdout exch write pop
This generates the following output:
"Jason Evans" <jasone@canonware.com> "Jason O. Evans" <jasone@canonware.com>