我正在尝试弄清楚如何从文件中提取某个元素。它之前总是有 4 个元素,但它后面可能有介于无元素和无穷大元素之间的任何地方。我想从这个文件中提取的元素可以命名为任何东西,但每行总是在同一位置。文件的行格式是这样的...
$(eval $(call CreateTest, file, KeyElement_0 ...
$(eval $(call CreateTest, file, KeyElement_1 ...
$(eval $(call CreateTest, file, KeyElement_2 ...
...
$(eval $(call CreateTest, file, KeyElement_n ...
我希望能够拉出KeyElement并将其读取到列表中,但我目前正在这样做......
proc filterTests path {
set f [listFromFile $path0/listfile]
set f [lsearch -all -inline $f "KeyElement_*"]
return $f
}
这现在有效,但元素可能不一定遵循KeyElement_*
格式,所以我需要能够解释这一点。
编辑
我用来从文件中读取的代码看起来像;
proc listFromFile {$path1} {
set find {$(eval $(call CreateTest, file, *}
upvar path1 path1
set f [open $path1 r]
while {[gets $f line] != -1} {
if {[string match ${find} $line]} {
set write [open listfile a]
foreach writetofile $line {
puts $write $writetofile
}
close $write
也许你可以试试
lsearch -regexp -all -inline $f {^.{32}KeyElement_S+}
或诸如此类。当然,您必须根据需要修改实际的正则表达式。
如果有用,将扩展。