On Sat, Jan 17, 2004, Brett Glass wrote:
>At 02:44 PM 1/17/2004, Eric Anderson wrote:
>
>>You should do your own Comp Sci homework. This looks like (especially considering 
>>the time of th year) the begining of a Unix Basics course.
>
>Nope; I'm quite experienced with UNIX. However, I posted the
>question because I wanted to see what the most efficient
>and clever answers would be. For example, while I received
>answers involving languages, such as sed and awk, the simplest 
>answer to at least one of them seems to use grep.

All of those (sed, awk, grep) involve making a copy of the original file
which can cause problems with ownership, permissions, concurrent access,
etc.  The gnu shtool is one of the most useful tools for this for in-place
updates that's considerably more friendly than the ``ed'' examples I posted
(truncated by my mailer for some reason).  One can use multiple sed
commands in one step:

shtool subst [-s] \
        -e '99d' \
        -e '/pattern1/s/$/\ninsert line after line with pattern1/' \
        -e '/pattern2/s/^/\ninsert line before pattern 2/' \
        -e '/pattern3/s/pat1/pat2/g' \
        file1 [file2, ....]

The -s option preserves the timestamps of the file(s) edited.

Remember if doing things based on line numbers (a) to make these changes
first from highest line number to lowest to prevent confusion.

The two lines with pattern1 and pattern2 require sed that recognizes the \n
escape sequence (gnu-sed does, FreeBSD doesn't).

Bill
--
INTERNET:   [EMAIL PROTECTED]  Bill Campbell; Celestial Software LLC
UUCP:               camco!bill  PO Box 820; 6641 E. Mercer Way
FAX:            (206) 232-9186  Mercer Island, WA 98040-0820; (206) 236-1676
URL: http://www.celestial.com/

A Galileo could no more be elected president of the United States than
he could be elected Pope of Rome.  Both high posts are reserved for men
favored by God with an extraordinary genius for swathing the bitter
facts of life in bandages of self-illusion.
                -- H. L. Mencken
_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to