TCL,替换文本文件中的字符串

时间:2016-01-27 10:11:18

标签: string file replace tcl text-files

假设我打开一个文件,然后将其解析为行。然后我使用循环:

foreach line $lines {}
例如,如果文件包含以下字符串:

XYDATA, NAME1 

我想将ACC_放在XYDATA之后获取ACC_NAME1 如果文件包含多个包含XYDATA的字符串,请添加VEL_DSP_Prs_等等

1 个答案:

答案 0 :(得分:1)

使用textutil::split中的tcllib包,以及foreach同时迭代多个列表的功能

package require textutil::split

set line {XYDATA, foo, bar, baz, qux}
set prefixes {ACC_ VEL_ DSP_ Prs_}

set fields [textutil::split::splitx $line {, }]
set new [list]

if {[lindex $fields 0] eq "XYDATA"} {
    lappend new [lindex $fields 0]
    foreach prefix $prefixes field [lrange $fields 1 end] {
        lappend new $prefix$field
    }
}
puts [join $new ", "]
XYDATA, ACC_foo, VEL_bar, DSP_baz, Prs_qux

或者,使用一个生成一些代码的regsub调用

set code [regsub -all {(, )([^,]+)} $line {\1[lindex $prefixes [incr counter]]\2}]
set counter -1
puts [subst $code]