2012-07-05 134 views
1

我有三個文件:Conf.txt,Temp1.txt和Temp2.​​txt。我已經完成了從config.txt文件獲取一些值的正則表達式。我想要放置這些值(它們在Temp1.txt和Temp2.​​txt中具有相同的名稱),並創建另一個兩個文件Temp1_new.txt和Temp2_new.txt。如何在tcl中讀取文件並寫入其他文件替換值

例如:在config.txt中,我有一個值爲IP1的名稱,並在Temp1.txt和Temp2.​​txt中出現相同的名稱。我想創建文件Temp1_new.txt和Temp2_new.txt替換IP1在Temp1.txt和Temp2.​​txt中說192.X.X.X。

我很感謝有人能幫助我用tcl代碼做同樣的事情。

+0

沒有真正與Tcl相關,但我剛剛遇到了一個非常有趣的*通用*工具,用於對具有任意語法的配置文件進行轉換 - [augeas](http://augeas.net/) – kostix 2012-07-10 17:31:37

回答

2

從提供的資料來看,基本上有兩種方法可以做你想做的:

  • 文件的語義感知;
  • 蠻力。

第一種方式是讀取源文件,parse它產生其內容的某些結構化內存中表示,則在所產生的表示替換相關值(一個或多個)之後序列化此內容到新的文件。

暴力方法意味着將源文件的內容作爲純文本(或一系列文本字符串)處理,並在此文本上運行類似regsubstring replace的文件,以生成新文本,然後將其保存到新文件。

第一種方式通常應該是有利的,特別是對於複雜的情況,因爲它消除了任何替換不相關文本的機會。蠻力的方式,我更容易代碼(如果沒有方便的庫來做到這一點,見下文),因此很適合丟棄腳本。

請注意,對於某些文件格式,有現成的庫可用於自動執行您所需的操作。比如XSLTtdom包的設施可以用來操縱XML文件,可以使用appropriate library等修改INI風格的文件。

+0

hmm ..感謝我用Brute-force方法完成 – user1389673 2012-07-06 10:01:48

相關問題