按元素在一行中的位置搜索文件



我正在尝试弄清楚如何从文件中提取某个元素。它之前总是有 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+}

或诸如此类。当然,您必须根据需要修改实际的正则表达式。

如果有用,将扩展。

相关内容

  • 没有找到相关文章

最新更新