[CentOS] replace

Bill Campbell centos at celestial.com
Fri Oct 24 19:12:43 UTC 2008


On Fri, Oct 24, 2008, Mad Unix wrote:
>i need your feedback about this command, it should find a string in
>multiple html files in a directory and replace it with a different
>string...
>
>find /dir -name "*.html" -exec sed -i 's/"old"/"new"/g' {} \;

There are several tools that handle this type of things quite nicely.

There is a simple script in Kernighan and Pike's book ``The Unix
Programming Environment'' that does simple replacements, and is
used as an example of writing shell scripts that fail gracefully
when things go wrong.

Ralf S. Engelschall's ``shtool'', the GNU Portable Shell Tool has
a ``subst'' function that is more flexible in that it is quite
easy to handle multiple ``sed'' expressions.  Unlike the
Kernighan and Pike scripts though, errors in expressions result
in a zero length file so making copies is a good idea.

MySQL also has a ``replace'' script that handles simple
replacement, but unfortunately has the same name as the Kernighan
and Pike script which was written at least a decade before MySQL
so should probably have been name ``myreplace'' or something
similar that did not conflict.

Perl also has options to do in-place replacements, and can make
backups of the files, which is also a nice feature.

Bill
-- 
INTERNET:   bill at celestial.com  Bill Campbell; Celestial Software LLC
URL: http://www.celestial.com/  PO Box 820; 6641 E. Mercer Way
Voice:          (206) 236-1676  Mercer Island, WA 98040-0820
Fax:            (206) 232-9186

War is the health of the state. -- Ralph Bourne


More information about the CentOS mailing list