A SED script

Malcolm Kay malcolm.kay at internode.on.net
Sat Jun 26 20:35:52 PDT 2004


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

>
> ....then, after the script changes the line in the perl script, it needs
> to pipe (echo/cat) in the new file contents to the old:
> cat newfile > oldfile ---> which is now ATX070 for oldfile
> ...then incremement the newfile to become "ATX080" and so on....
>
> Now, got to figure out how to increment number up. It is an invoice
> prefix number that contains the month # and must modify the perl file
> that is part of a custom order set of scripts.....
>
> _______________________________________________
> freebsd-questions at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to
> "freebsd-questions-unsubscribe at freebsd.org"



More information about the freebsd-questions mailing list