bash one liner to change/remove test pattern from config file or text file.

2010-06-25 1 min read bash Fedora Learning Linux

Problem:

I had a directory with a lot of config files in the ini file format, i.e. name and value separated by equals. Some/all of these contained some directory names and other values which had to be replaced. But there were other place where I should not not replace them, if there was no exact match. I also needed to have a backup copy of the file that I was modifying. Since the number of files that I needed to change was multiple so was quite difficult to do it without using some script.

Solution:

for i in $(grep -l ’/opt/amitag’  *) ;

do sed ’s@/opt/amitag/@@’ $i >${i}.new;

mv $i{,.bak};

mv $i{.new,} ;

done

I was doing it in a box where sed did not have the -i option and hence I had to write sed output to different file, and then move the files back and forth. You can change the string ”/opt/amitag” in the above commands to anything you like 🙂

comments powered by Disqus