将文件内容在两次匹配之间复制到其他文件

时间:2014-03-21 07:22:16

标签: tcl

我有一个文件,其中的数据如下所示:

Files {

string1

string2

string3
 ... 
 ...

}

但我想在{&之间复制内容。 }string1string2到其他文件,大括号与其他文件位于不同的行中。

1 个答案:

答案 0 :(得分:0)

由于Tcl非常灵活,并且该文件具有Tcl-ish语法,我会这样做:

proc Files {data} {set ::files_data $data}
source data_file

set fin [open other_file r]
set fout [open other_file.tmp w]
set have_string1 false
while {[gets $fin line] != -1} {
    if {$have_string1 && [string match "string2" $line]} {
        puts $fout $files_data
    }
    puts $fout $line
    if {[string match "string1" $line]} {
        set have_string1 true
    }
}
close $fin
close $fout

# next line only if you need to keep a backup of the original
file link -hard    other_file.bak other_file 
file rename -force other_file.tmp other_file