Need regex shell script to remove text from file

Hello
I am trying to remove a line like <?php /*versio:2.05*/if (!defined('determinator')){ content goes here}?>
Now i want to scan all php file and remove that above line. I already write it but not working.

#!/bin/bash
find . -name '*.php' -exec grep -q determinator {} \; -print -exec perl -pi -w -e 's/\<\?php \/*versio:2.05;*/ if \(\!defined\(\$determinator.*\?\>//g' {} \;

Can somebody help to solve that.

Thanks

find . -name "*.php" -exec grep -q determinator {} \; -print -exec perl -pe 's#<\?php /\*versio:2\.05\*/if \(\!defined\(\$determinator\)\)\{.*?\}\?>##g' {} \;

Or perhaps more readably:

find . -name '*.php' | while read file ; do
   perl -pi -e 's...' $file
done

Shouldn't perl -pie be perl -pi -e ?

1 Like

Yes, thanks. As you can probably tell, my perl skills are not very developed... :-\

Hi balajesuri

Thank you for your reply.

I run the code you provided

find . -name "*.php" -exec grep -q determinator {} \; -print -exec perl  -pe 's#<\?php /\*versio:2\.05\*/if \(\!defined\(\$determinator\)\)\{.*?\}\?>##g' {} \;

But it just print me the entire file code

I want to update the file and remove the code i.e /*versio:2.05*/if (!defined('determinator')){ full content }

@devp: Please include the option -i to perl code.

...-exec perl -i -pe 's....