sed substitution that contains forward slash
Daniel B. Thurman
dant at cdkkt.com
Wed Apr 1 00:33:16 UTC 2009
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.
>
> Is there a way to coerce sed to identify & replace strings with a /
> inside?
>
> Craig
>
The second fails because in the file where there is
a '/' in the stream, sed sees more delimiters such as:
s//Q1500T3/CL120 DELETED/g
========^ (extra delimiter)
and so fails.
Your use of '%" as a sed delimiter works so as long as %
is not part of the sed stream.
More information about the fedora-list
mailing list