A SED script

antenneX antennex at swbell.net
Sun Jun 27 07:08:42 PDT 2004


----- Original Message ----- 
From: "Malcolm Kay" <malcolm.kay at internode.on.net>
To: "antenneX" <antennex at swbell.net>; "Giorgos Keramidas"
<keramida at ceid.upatras.gr>
Cc: <freebsd-questions at freebsd.org>
Sent: Saturday, June 26, 2004 10:35 PM
Subject: Re: A SED script


> On Sunday 27 June 2004 07:49, antenneX wrote:
> > ----- Original Message -----
> > From: "Giorgos Keramidas" <keramida at ceid.upatras.gr>
> > To: "antenneX" <antennex at swbell.net>
> > Cc: <freebsd-questions at freebsd.org>
> > Sent: Saturday, June 26, 2004 1:40 PM
> > Subject: Re: A SED script
> >
> > > On 2004-06-26 12:08, antenneX <antennex at swbell.net> wrote:
> > > > I cannot get it to work on another file (perl.pl file) to change
the
> >
> > line:
> > > > $OrderNumPrefix = "ATX060"; to $OrderNumPrefix = "ATX070";
> > > >
> > > > I suspect I'm not handling the quotes or other operators
correctly
> >
> > and it
> >
> > > > just ignores the change.
> > > >
> > > > Here's the snippet of the script I'm trying to use:
> > > > #!/bin/sh
> > > > new=`grep -i new /path/to/newfile`
> > > > old=`grep -i new /path/to/oldfile`
>
> It would seem that the variables new and old will both be set to
something
> containing 'new' (perhaps not in lower case).
> How does this relate to "ATX060" and "ATX070"?
>
> > > > sed -i.bak -e "s/$old/$new/" /path/to/myfile
> > >
> > > The results depend heavily on the existence and contents of the
two
> >
> > files
> >
> > > named /path/to/{old,new}file.  I'm sure if you change the sed line
to:
> > >
> > >     sed -i.bak -e 's/ATX060/ATX070/' /path/to/myfile
> > >
> > > it will all work fine.
> >
> > Indeed, this works fine. The old/new files are needed to set the
> > varibles to hold the new number for the next time as this is run via
> > cron.
> >
>
> You've still not shown us the relevant lines of /path/to/newfile or
> /path/to/oldfile
>
> > old = ATX060
> > new = ATX070
>
> What are these? The contents of /path/to/{new,old}file?
> If so sed will be looking to change the string "old = ATX060" to
> "new = ATX070".
>
> Or do the files simply consist of
> ATX060
> and
> ATX070
> ?
> If so then grep is not the right command to load the variables old and
new.
> Try:
>   new=`cat /path/to/newfile`
>   old=`cat /path/to/oldfile`
>
> Malcolm
>

I've solved the script ptoblem with a verbose run of the script & it
told me exactly what was wrong -- the two varibles newfile & oldfile
were not defined properly.

Running this showed the error:
/bin/sh -xv ./myscript

Sorry I didn't think to do this in the first place.



More information about the freebsd-questions mailing list