sed substitution that contains forward slash

Craig White craigwhite at azapple.com
Wed Apr 1 00:27:40 UTC 2009


On Tue, 2009-03-31 at 20:16 -0400, Todd Zullinger wrote:
> Craig White 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.
> 
> Hmm, it should work using a delimeter other than '/' or escaping the
> '/'.  Escaping the '/' is a bit more of a pain than just changing
> delimeters, as long as you know that whatever delimeter you pick won't
> be in the strings you are substituting.
> 
> It seems to work for me:
> 
> $ dc="Q10MR11/FL12V"; rc=DELETED; echo "dc=${dc}"; echo "rc=${rc}"; \
>   echo "This is some Q10MR11/FL12V text." | sed "s%${dc}%${rc}%g"
> dc=Q10MR11/FL12V
> rc=DELETED
> This is some DELETED text.
----
Interesting...using the vertical bar as the regex separator worked where
the % failed for me.

Thanks

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