Date: Sun, 27 Jun 2004 09:08:31 -0500 From: "antenneX" <antennex@swbell.net> To: "Malcolm Kay" <malcolm.kay@internode.on.net>, "Giorgos Keramidas" <keramida@ceid.upatras.gr> Cc: freebsd-questions@freebsd.org Subject: Re: A SED script Message-ID: <00f601c45c50$3e268f30$0200000a@SAGEAME> References: <00ce01c45ba0$343ffc00$0200000a@SAGEAME><20040626184008.GB1016@gothmog.gr> <00da01c45bcb$b1381d70$0200000a@SAGEAME> <200406271305.21121.malcolm.kay@internode.on.net>
next in thread | previous in thread | raw e-mail | index | archive | help
----- Original Message ----- From: "Malcolm Kay" <malcolm.kay@internode.on.net> To: "antenneX" <antennex@swbell.net>; "Giorgos Keramidas" <keramida@ceid.upatras.gr> Cc: <freebsd-questions@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@ceid.upatras.gr> > > To: "antenneX" <antennex@swbell.net> > > Cc: <freebsd-questions@freebsd.org> > > Sent: Saturday, June 26, 2004 1:40 PM > > Subject: Re: A SED script > > > > > On 2004-06-26 12:08, antenneX <antennex@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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?00f601c45c50$3e268f30$0200000a>