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

2010-01-27 136 words 1 min read

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.


Authored By Amit Agarwal

Amit Agarwal, Linux and Photography are my hobbies.Creative Commons Attribution 4.0 International License.

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now
This website uses cookies to ensure you get the best experience on our website. Learn more Got it