Linux Command: Find & Replace using regex not woking as expected -


i trying replace path in php files using regex command, isn't working expected!

i want replace '/home/example/public_html $_server['document_root'] . '

i using below command in ssh:

find /var/www/advertise/ -name '*.php' -type f -exec sed -i 's/\'\/home\/example\/public_html/\$\_server\[\'document\_root\'\]\ \.\ \'/g' {} \; 

when enter command , hit return, > sign follows like:

>

>

> .. on keep hitting return execute command.

where below command works (for replacing home/example/public_html var/www):

find /var/www/advertise/ -name '*.php' -type f -exec sed -i 's/home\/example\/public_html/var\/www/g' {} \; 

you're messing quotes.

  • use separator other / don't need escape /
  • you don't need escape in replacement
  • since have ' in replacement, better use "s#..#..#" (i.e. double quotes). however, you'll need escape $ in replacement prevent shell trying expand.

the following might work you:

find /var/www/advertise/ -name '*.php' -type f -exec sed -i "s#'/home/example/public_html#\$_server['document_root'] . '#g" {} \; 

Comments

Popular posts from this blog

java.util.scanner - How to read and add only numbers to array from a text file -

rewrite - Trouble with Wordpress multiple custom querystrings -