2009年3月18日

Perl 一行程式解決Email置換問題

由於公司被合併了~ 所以原本程式中發告警或報表都是採用mail的方式,所以程式中mail address也要改成新的郵件帳號,由於大家的程式一大堆,又雜在不同目錄裡,所以一定要用程式來自動修改才比較理想,在Unix下處理字串最強的程式那就是Perl了,希望能達到下一行指令就能全部搞定的目標~

舊的mail為: taiwanwolf@abc.com.tw
新的mail為: taiwanwolf@def.com.tw

大家的程式都放在 /home/個人目錄下

Perl 的一行程式簡介,當然要來個 Hello World示範~

#perl -e 'print "hello World\n"'
這樣就會印出 hello World

至於自動置換email的作法如下:

進入要改的目錄,其目錄下的檔案為修改的目標
#cd /home
執行此指令,將檔案中有 @abc.com.tw 的字串置換成 @def.com.tw
#perl -i.bak -pe 's/\@abc.com.tw/\@def.com.tw/g' *

參數說明:
-i.bak
將會修改的檔案,自動備份為 *.bak,不加.bak的話就會直接替換掉,不會備份
-e
執行 command line 一定要加
-p
loops 會不斷重複執行

終極版:如果要 /home 與裡面所有子目錄內的檔案都要改到的話,就要再加上 grep 的加持
#perl -i.bak -pe 's/\@abc.com.tw/\@def.com.tw/g' `grep -ril @abc.com.tw *`

沒有留言: