2012-07-05 389 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

相关问题