msed
— manipulate
message headers
msed
prints the messages
msgs with message headers transformed by the commands
in script. (See
mmsg(7)
for the message argument syntax.) If no msgs are
passed, msed
will default to the current
message.
msed
scripts are akin to a subset of
sed(1)
scripts, but optimized for modifying messages. Note that
msed
unfolds and normalizes message headers, so they
may need to be passed through
mmime(7)
to ensure RFC 5322 conformance. The message body is not affected.
msed
supports the following
commands. The separators
after the command
letter may be substituted with an arbitrary symbol, just as in
sed(1).
Multiple commands can be separated by
‘;
’.
/
header/
a
/
value/
- If the header
‘header
:
’ is
not set in the message, add it with the given
value.
/
headers/
c
/
value/
- Change colon-separated headers matching the regular expression
headers, with implicit anchoring to the header name,
to the value given in value.
/
headers/
d
- Delete colon-separated headers matching the regular expression
headers, with implicit anchoring to the header name.
Use explicit ‘
.*
’ to match arbitrary
strings at the beginning or end of the headers.
For example, ‘/x-.*/d
’
will delete all headers starting with
‘X-
’ (always case insensitive),
and ‘/from:to:cc/d
’ will delete
the headers ‘From:
’,
‘To:
’, and
‘Cc:
’.
- [
/
headers/
]s
/
regex/
replacement/
[flags]
- Substitute matches of the POSIX Basic Regular Expression
regex in headers matching the POSIX Basic Regular
Expression headers, with implicit anchoring to the
header name (or all headers, if omitted), with the string
replacement, expanding
‘
&
’ to the matched string, and
‘\
N’ to the
Nth sub-expression, where N is
between 1 and 9.
If flags contains the letter
‘d
’, the header is removed if
regex matched.
By default, only the first match is replaced, unless
flags contains the letter
‘g
’.
By default, regex is matched case
sensitively, unless flags contains the letter
‘i
’.
The msed
utility exits 0 on
success, and >0 if an error occurs.