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.
Related Articles:
Authored By Amit Agarwal
Amit Agarwal, Linux and Photography are my hobbies.Creative Commons Attribution 4.0 International License.