使用tcl脚本将数据提取到不同的文件

使用tcl脚本将数据提取到不同的文件,tcl,extract,Tcl,Extract,我试图将每个检查提取到每个新文件中 提取数据文件(report.txt)的内容 我想要的示例输出: 在data\u check\u multiple\u clock.txt的内容中, 文件为空,因为没有写入错误 数据检查、无时钟和cell.txt也是如此 但是,no_driving_cell.txt的内容如下: atb0_uib atb1_uib a[0] b[1] b[2] 你知道怎么做吗? 下面是在空错误上有错误的编码,其中所有文件都得到在no_driving_单元格中找到的相同错误

我试图将每个检查提取到每个新文件中

提取数据文件(report.txt)的内容

我想要的示例输出:

在data\u check\u multiple\u clock.txt的内容中, 文件为空,因为没有写入错误

数据检查、无时钟和cell.txt也是如此

但是,no_driving_cell.txt的内容如下:

atb0_uib
atb1_uib
a[0]
b[1]
b[2]
你知道怎么做吗? 下面是在空错误上有错误的编码,其中所有文件都得到在no_driving_单元格中找到的相同错误

        set var "Information: Checking '[lindex $argv $i]'"
        set fi [open "$line" r]
        set fo [open "check_[lindex $argv $i].csv" a]

        # Extract data to output file
        while {[gets $fi line1] !=-1} {
            if {[regexp "$var" $line1]} {
                puts "check_timing_info: Found $line1"
                puts $fo $line1
                puts $fo $line
                set flag 1
            }
            if {$flag eq 1} {
                if {[regexp "$var1" $line1]} {
                    set flag 2
                } elseif {[regexp "^Error" $line1]} {
                    set flag 2
                }   
            } 
            if {$flag eq 2} {
                if {[regexp "Information: Checking" $line1]} {
                    set flag 0
                } elseif {[regexp "$var1" $line1]} {

                } else {    
                #   puts $line1
                    puts $fo $line1
                }
            }

        }
        close $fo
    }
    } else {

    } 
     }
}

老实说,我不能说我有任何好的线索,你想在这里做什么,但可能像这样的工作

set fi [open report.txt]

while {[gets $fi line] >= 0} {
    switch -glob $line {
        Information:* {
            set filename [lindex [regexp -inline {'(.*)'\.$} $line] 1]
        }
        --* {
            puts $filename
            while {[gets $fi line] >= 0} {
                if {[string is space $line]} {
                    break
                }
                puts $line
            }
        }
    }
}
它会产生输出(我将输出到stdout,因为这使实验更容易):

set fi [open report.txt]

while {[gets $fi line] >= 0} {
    switch -glob $line {
        Information:* {
            set filename [lindex [regexp -inline {'(.*)'\.$} $line] 1]
        }
        --* {
            puts $filename
            while {[gets $fi line] >= 0} {
                if {[string is space $line]} {
                    break
                }
                puts $line
            }
        }
    }
}
no_driving_cell
atb0_uib
atb1_uib
a[0]
b[1]
b[2]