sed substitution that contains forward slash

Craig White craigwhite at azapple.com
Wed Apr 1 00:20:22 UTC 2009


On Tue, 2009-03-31 at 14:11 -1000, David Burns wrote:
> On Tue, Mar 31, 2009 at 1:37 PM, Craig White <craigwhite at azapple.com> wrote:
> > subtitle...fun with sed
> >
> > I have a list of changes to make to a file...
> >
> > dc              rc
> > -------------   -------
> > 15T6145V        DELETED
> > NATL19502       DELETED
> > Q10MR11/FL12V   DELETED
> > Q1500T3/CL120   DELETED
> >
> > and things work until I get to the 3rd item which has a forward slash
> > and it fails to substitute with commands like below...
> >
> > sed -i "s%${dc}%${rc}%g" ARsalesorderdetails.csv
> > and
> > sed -i "s/${dc}/${rc}/g" ARsalesorderdetails.csv
> >
> > The latter producing error on screen...
> > sed: -e expression #1, char 17: unknown option to `s'
> >
> > While the former simply doesn't complain but doesn't make the change
> > either.
> >
> > Is there a way to coerce sed to identify & replace strings with a /
> > inside?
> >
> 
> I don't think it is sed that is giving you a problem:
> 
> $ echo "Q10MR11/FL12V "|sed "s|Q10MR11/FL12V|DELETED|"
> DELETED
> 
> Perhaps bash is not resolving your use of the ${dc} and ${rc}
> variables as you expect. Since you do not include the full string of
> commands and I never use ${}, I don't know what the problem is.
> Dave
----
you could be right...my problem is I can't enclose the sed string in
single quotes because the variables won't expand and I find that just
doing this...

sed -i "s|$dc|$rc|g" ARsalesorderdetails.csv

fails and still leaves me with this...

1,6066,"Q1500T3/CL/120V",2," 6.99 ",2,,,"2007-01-09",1,,,

so I'm strugging with various ways...

sed -i "s|$(dc)|$(rc)|g" ARsalesorderdetails.csv # doesn't work
or the curly braces to try to keep the string together

Craig


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.




More information about the fedora-list mailing list