Tcl 如何从特定行获取全名和列号

Tcl 如何从特定行获取全名和列号,tcl,Tcl,我在一个表中有两行,如下例所示。 我想得到每个单词的名称和列号。 问题是获取位于两行中的全名作为延迟平均值 如何获取全名和列号 Edge Fanout Load Slew Delay Delay Delay Incr User Total Arrival Arrival Arrival Timing Point Cel

我在一个表中有两行,如下例所示。 我想得到每个单词的名称和列号。 问题是获取位于两行中的全名作为延迟平均值

如何获取全名和列号

       Edge   Fanout   Load      Slew        Delay       Delay       Delay       Incr        User     Total    Arrival      Arrival      Arrival      Timing Point                     Cell              Generated Clock        
                                             Mean        Sigma                   Delay       Derate   Derate   Mean         Sigma        Time                                                            Adjustment             
代码:


假设单词之间有2个或多个空格,且每个标题行以2个或多个空格结尾:

set fh [open $filename r]
set lines [split [read -nonewline $fh] \n]

set indices [regexp -all -indices -inline {\S+(?:\s\S+)?\s{2,}} [lindex $lines 0]]

foreach pair $indices {
    lassign $pair start end
    lappend headings [join [lmap line $lines {
        string trim [string range $line $start $end]
    }]]
}

for {set i 0} {$i < [llength $headings]} {incr i} {
    puts "column [expr {$i+1}] is <[lindex $headings $i]>"
}

没有第二行部分的标题后面有一个空格。如果不需要,可以添加另一个字符串修剪。

什么分隔列?制表符?你能解释一下下面的命令吗?regexp-all-index-inline{\S+?:\S\S+?\S{2,}
set fh [open $filename r]
set lines [split [read -nonewline $fh] \n]

set indices [regexp -all -indices -inline {\S+(?:\s\S+)?\s{2,}} [lindex $lines 0]]

foreach pair $indices {
    lassign $pair start end
    lappend headings [join [lmap line $lines {
        string trim [string range $line $start $end]
    }]]
}

for {set i 0} {$i < [llength $headings]} {incr i} {
    puts "column [expr {$i+1}] is <[lindex $headings $i]>"
}
column 1 is <Edge >
column 2 is <Fanout >
column 3 is <Load >
column 4 is <Slew >
column 5 is <Delay Mean>
column 6 is <Delay Sigma>
column 7 is <Delay >
column 8 is <Incr Delay>
column 9 is <User Derate>
column 10 is <Total Derate>
column 11 is <Arrival Mean>
column 12 is <Arrival Sigma>
column 13 is <Arrival Time>
column 14 is <Timing Point >
column 15 is <Cell >
column 16 is <Generated Clock Adjustment>