Mailing List Archive

Support open source code!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: tlug: sed ?

tlug note from "Stephen J. Turnbull" <>
>>>>> "Jim" == Jim Schweizer <> writes:

    Jim> After the great help a couple of weeks ago on using sed to
    Jim> strip headers from email I decided to try to learn a little
    Jim> more about it. So, I ordered the O'Reilly 'sed & awk' book
    Jim> and got to work.

    Jim> The problem is, sometime things don't work as advertised. For
    Jim> example in chapter 3 you're supposed to make a program for
    Jim> making single replacements called 'gres' which looks like:

    Jim> jim:~/bin$ cat gres

Hmmmm...  where's your magic shell interpreter thingie?  Try inserting 


because bash and sh are not the same, quite, but calling bash as sh
makes it much more compatible.  This in fact doesn't work here :-)

    Jim> if [ $# -lt "3" ]
    Jim> then
    Jim>         echo Usage: gres pattern replacement file
    Jim>         exit 1
    Jim> fi
    Jim> pattern=$1
    Jim> replacement=$2
    Jim> if [ -f $3 ]
    Jim> then
    Jim>         file=$3
    Jim> else
    Jim>         echo $3 is not a file
    Jim>         exit 1
    Jim> fi
    Jim> A="'echo | tr '\012' '\001' '"
    Jim> sed -e "s$A$pattern$A$replacement$A" $file

I assume that this is a hack which allows you to use a nonprintable,
and thus highly unlikely to appear in the pattern or replacement,
separator in the `s' command.  Such hacks tend to be very unportable
across shells.

If you substitute backquotes for the "' and '" pairs, it works.  I
couldn't find a way to get around the shell variable A, though.

    Jim> When I try to use it though I get the error:

    Jim> sed: Unknown option to 's'

Me, too.

    Jim> So I tried in on both my Slackware setup and SparkLinux with
    Jim> the same result.

    Jim> The book was written and tested on a SparcStation 1 running
    Jim> SunOS 4.0. Is the Linux sed version different? I'm using GNU
    Jim> sed version 2.05; should I upgrade?

It's not sed that's different, it's the shell.  Our Suns run csh by
preference, maybe this is a csh-ism.

FIRST, blame the shell.  Then look for problems with other programs ;-)


                            Stephen J. Turnbull
Institute of Policy and Planning Sciences                    Yaseppochi-Gumi
University of Tsukuba            
Tel: +81 (298) 53-5091;  Fax: 55-3849    
a word from the sponsor will appear below
The TLUG mailing list is proudly sponsored by TWICS - Japan's First
Public-Access Internet System.  Now offering 20,000 yen/year flat
rate Internet access with no time charges.  Full line of corporate
Internet and intranet products are available.
Tel: 03-3351-5977   Fax: 03-3353-6096

Home | Main Index | Thread Index

Home Page Mailing List Linux and Japan TLUG Members Links