【发布时间】:2016-03-27 18:01:33
【问题描述】:
我正在尝试执行以下操作:
- 打开要读取的文件
- 分割线
- 识别感兴趣的线
- 将名称
Prefix_2替换为Prefix_999 - 删除所有带有
Prefix_1的行 - 将行保存到原始文件
我可以做到第 3 点,但是在替换名称时,我似乎无法将感兴趣的行拆分为元素,以便可以将 Prefix_2 替换为 Prefix_999
它总是替换为整个感兴趣的行,如下所示,例如
Prefix_2.Var1 = 5124 将替换为 Prefix_999 而不是 Prefix_999.Var1 = 5124
文件Data.txt中的示例数据
Prefix_1.Var1 = 200
Prefix_1.Var2 = 0.3
Prefix_1.Var3 = 0.5
Prefix_1.Var4 = 0.25
Prefix_1.Var5 = 3
Prefix_1.Var6 = 36
Prefix_1.Var7 = 5612
Prefix_1.Var8 = 631
Prefix_1.Var9 = 102
Prefix_1.Var10 = 14
Prefix_1.Var11 = 3
Prefix_1.Var12 = 2
Prefix_2.Var1 = 5124
Prefix_2.Var2 = 876
Prefix_2.Var3 = 10.1
Prefix_2.Var4 = 11
我的代码:
set input [open "Data.txt" r]
set number 0
set var2 ""
while { [gets $input line] >= 0 } {
incr number
set sline [split $line "\n"]
set var1 [regexp {Prefix_2.Var1} $sline match]
if {$var1 == 1} {
set rVar1 [split $sline \s]
# check the length to index correctly for replacing
set rVar2 [llength $rVar1]
set rVar2 [lreplace $rVar2 0 0 Prefix_999.Var1]
}
}
close $input
【问题讨论】:
-
您正在替换变量
rVar2,该变量具有实际预期数据的长度。不是实际列表。