Quickly search and replace string with Regular expression in multiple files using perl

2010-01-27 1 min read Linux

for i in *; do perl -p -w -e ’s/a(.*)b.*/d$1e/g’  $i > temp/$i; done

for i in *; do perl -pi -w -e ’s/a(.*)b.*/d$1e/g’  $i ; done

The first one can be used when you want to preserve the original file. The redirection will cause the file with replaced string to be written to the new location in the temp directory. Modify the same according to your needs.

The second can be used to modify the files in-line. Causing overwriting the original file.

Explanation of the RE : s/a(.*)b.*/d$1e/g

s – substitue

s(.*)b.* –> match anything starting with and store the substring upto b into $1 for further use. Continue matching from b until end of line

d$1e –> replace the original string with d concatened with $1 from the match above and then with e.

comments powered by Disqus