Friday, June 12, 2015

substituting a function name with sed and find

I needed to change a

function foo('', '', 'whatever') 

to a

bar('whatever')

in a bunch of files.

There are many ways to do this, I decided to edit directly the files with good ol' find & sed

find . -name "*.js" -exec sed --in-place -re "s/foo\([^,]*,[^,]*,[^'\"]*(['\"])(.*)\1/bar('\2')/g" {} \;

options:
-r: Key points where to use the full extended regular expression
-r: expression
\1: notice I match the initial ' or " with a back reference!

No comments:

Post a Comment

cancel script completely on ctrl-c

I found this question interesting: basically how to cancel completely a script and all child processes : You do this by creating a subro...