The
s
file command in
mail saves the
current message in
file. If the message came over a
network (such as the Internet), then it has several header lines prepended
that give information about network routing. Write a shell script that
deletes the header lines from the file.
We can use ed to
delete the header lines. To do this, we need to know something about the syntax
of mail messages; specifically, that there is always a blank line between the
header lines and the message text. The ed command 1,/^[]*$/d does the trick: it means, "Delete from
line 1 until the first blank line." We also need the ed
commands w (write the changed file) and
q (quit). Here is the code that solves the
task:
ed $1 << EOF
1,/^[ ]*$/d
w
q
EOF
The shell does parameter (variable) substitution and command substitution on
text in a here-document, meaning that you can use shell variables and commands
to customize the text. A good example of this is the
bashbug script, which sends a bug report to the
bash maintainer (see
Chapter 11). Here is a stripped-down version:
0 件のコメント:
コメントを投稿