combine--Extract Multipart uuencoded Binaries (sed & awk, Second Edition)
13.3. combine--Extract Multipart uuencoded Binaries
Contributed by Rahul Dhesi
Of all the scripts I have ever written, the one I am most proud
of is the "combine" script.
While I was moderating comp.binaries.ibm.pc, I wanted to provide
users a simple way of extracting multipart uuencoded binaries.
I added BEGIN and END headers to each part to enclose the uuencoded
part and provided users with the following script:
cat $* | sed '/^END/,/^BEGIN/d' | uudecode
This script will accept a list of filenames (in order) provided as
command-line arguments. It will also accept concatenated articles as
standard input.
This script invokes cat in a very useful way that is well known to
expert shell script users but not enough used by most others. This
allows the user the choice of either providing command-line arguments
or standard input.
The script invokes sed to strip out superfluous headers and trailers,
except for headers in the first input file and trailers in the last
input file. The final result is that the uuencoded part of the
multiple input files is extracted and uudecoded. Each input file
(see postings in comp.binaries.ibm.pc) has the following form:
headers
BEGIN
uuencoded text
END
I have lots of other shell stuff, but the above is simplest and has
proved useful to several thousand comp.binaries.ibm.pc readers.
13.3.1. Program Notes for combine
This one is pretty obvious but accomplishes a lot.
For those who might not understand the use of this command, here is the
explanation. A Usenet newsgroup such as comp.binaries.ibm.pc
distributes public-domain programs and such. Binaries, the object
code created by the compiler, cannot be distributed as news
articles unless they are
"encoded." A program named uuencode
converts the binary to an ASCII representation that can be easily
distributed.
Furthermore, there are limits on the size of
news articles and large binaries are broken up into a series of
articles (1 of 3, 2 of 3, 3 of 3, for example).
Dhesi would break up the encoded binary into manageable chunks, and
then add the BEGIN and END lines to delimit the text that
contained encoded binary.
A reader of these articles might save each article in a file.
Dhesi's script automates the process of combining
these articles and removing extraneous information such as the
article header as well as the extra BEGIN and END headers. His
script removes lines
from the first END up to and including the next BEGIN pattern.
It combines all the separate encoded parcels and directs
them to uudecode, which converts the ASCII representation to binary.
One has to appreciate the amount of manual editing work avoided
by a simple one-line script.
13.2. phonebill--Track Phone Usage13.4. mailavg--Check Size of Mailboxes
Copyright © 2003 O'Reilly & Associates. All rights reserved.
Wyszukiwarka
Podobne podstrony:
ch13 (12)Cisco2 ch13 Conceptch13ch13ch13ch13ch13ch13ch13 (2)ch13 (7)ch13ch13 (30)ch13 (14)ch13 (6)ch13więcej podobnych podstron