Find / Replace escape

Hello,

I want to do a find and replace on ALL files in a directory, using this:

       find /home/me/directory/ -type f | while read fname
       do
          sed 's/\FIND/REPLACE/g' $fname > $fname.new
         mv -f $fname.new $fname
       done



But I want to find this:
   <img src="images/my_image.jpg" width="150" height="50" hspace="5">


and replace it with this:
   <a href="link.name" target="_blank"><img src="image.gif" width="50" height="50" hspace="5" border="0" /></a>




What charactors to I need to escape and how do I escape them?


Thanks!
LVL 16
hankknightAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
sunnycoderConnect With a Mentor Commented:
Hi hankknight,

You need to escape each speacial character with a \  ... field separator is also special character in a sed command, so use : instead of /  and you dont have to escape the / characters ...

sed 's:<img src="images/my_image.jpg" width="150" height="50" hspace="5">:<a href="link.name" target="_blank"><img src="image.gif" width="50" height="50" hspace="5" border="0" /></a>:g'

This should work ... Let me know the error if it fails

Cheers!
sunnycoder
0
 
hankknightAuthor Commented:
Thanks,

What about each of these?  Which ones need escaping?

? \ . [ ] ^ $ & % \ _ > + = | !
0
 
ozoConnect With a Mentor Commented:
\\  \. \[  \^  \$  
and perhaps \! depending on your shell
0
 
sunnycoderCommented:
Look at the man page of sed on your machine ... that should contain the list of special characters

Cheers
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.