天天看點

使用 Perl 腳本做檔案内容替換

本人是Perl語言初學者,僅僅是讀完 Perl語言入門(第四版).pdf,工作中寫過幾個小腳本。

感覺Perl語言處理文本任務确實很強大,準備寫些個筆記用于知識積累。

最近工作中需要更新很多個檔案,每個檔案隻需要更新字元串資源的字元串 id ,檔案是 xml 格式的(Perl有強大的xml處理能力,這裡直接當成文本檔案處理了)。

基本上就是用新的id更新掉老的id,但是其他内容都是保持不變的。

直接使用文本比較工具進行更新的話,将會是個有着大量重複勞動的體力活。

我的辦法是,使用比較工具把需要更新的内容摘取出來,形成兩個檔案,from 和 to ,分别是老的 id 和 新的 id。然後用腳本自動去執行更新這個動作,我們就可以去悠閑的去品咖啡了。

腳本内容相當簡單:把 from 和 to 分别讀取到兩個數組存放。依次讀取輸入檔案的每一行,如果是在 from 數組裡面,就替換成 to數組裡面的内容。(超級簡單啊,甚至都不需要用到正規表達式哦)

#!perl -- update xml files

# open from.txt
open (FROM,"<from.txt");
my @From = <FROM>;
close FROM;

# open to.txt
open (TO, "<to.txt");
my @To = <TO>;
close TO;

# open input file
open (TOPROCESS, "<String.xml");
my @ToProcess = <TOPROCESS>;
close TOPROCESS;

# open output file
open (OUT, ">String.xml.txt");
select OUT;

# do the replace!
$counter = 0;
foreach $line(@ToProcess)
{
    if( $line eq $From[$counter])
    {
        $line = $To[$counter];
        $counter++;
    }
    print $line;
}
close OUT;