Latest: XHTML Validation with the W3C validator and PHP

Content with Style

Web Technique

Command line search and replace?

by Pascal Opitz on September 30 2008, 06:24

So I'm asking around for the best way to do search and replace in command line ... I have to copy files into another folder, but replace one word.

Tom pointed me towards using perl:


cp ./source/* ./destination/
cd ./destination/
perl -pi -e 's/foo/bar/' * 

Justin in contrast uses sed, and a loop:


cd ./source
for A in `ls`; do  echo sed 's/foo/bar/' $A > ./destination/$A; done;

Which brought me to finally look into the man pages for sed , the linux stream editor. Apparanetly the -i flag enables in-place editing there as well, and you could do something like tom did with sed:


cp ./source/* ./destination/
cd ./destination/
sed -i '' 's/foo/bar/' *

Initially, trying the -i flag, I got weird warnings like this:
sed: 1: "index.shtml": command i expects followed by text

This is due to the missing extension that you need to provide for the -i flag, in the case above I used '' to not create any backup files. If you provide '.bak' it will create backup files, i.e. index.shtml.bak before editing.

Happy search and replace!

Comments

Leave your comment

Comments are moderated.
Tags allowed: a, strong, em, code, ul, ol, li, q, blockquote, br, p

Advertisement

Want to buy a cheap laptop for your design work? read laptop reviews at laptopical.com