File 如何在现有tcl文件中的两行文本之间写入?

File 如何在现有tcl文件中的两行文本之间写入?,file,tcl,file-handling,File,Tcl,File Handling,我想在现有tcl文件的两行之间写入。例如,我想在第41行和第42行之间写一些文字。新文本应在第42行,42中的旧文本应转到43并重复,直到最后一行向下移动1 我试过了,但是文字被替换了 当前: set bCheckIPs 1 if { $bCheckIPs == 1 } { set list_check_ips "\ ip:proc_sys_reset:5.0\ ip:processing_system7:5.5\ ip:xlconstant:1.1\ ip:axi_dma:7.1\ i

我想在现有tcl文件的两行之间写入。例如,我想在第41行和第42行之间写一些文字。新文本应在第42行,42中的旧文本应转到43并重复,直到最后一行向下移动1

我试过了,但是文字被替换了

当前:

set bCheckIPs 1
if { $bCheckIPs == 1 } {
   set list_check_ips "\ 
ip:proc_sys_reset:5.0\
ip:processing_system7:5.5\
ip:xlconstant:1.1\
ip:axi_dma:7.1\
ip:axis_data_fifo:2.0\
hls:trace_cntrl_32:1.4\
"
我的预期产出:


set bCheckIPs 1
if { $bCheckIPs == 1 } {
   set list_check_ips "\ 
ip:proc_sys_reset:5.0\
ip:processing_system7:5.5\
ip:xlconstant:1.1\
ip:axi_dma:7.1\
ip:sample:1.0\
ip:axis_data_fifo:2.0\
hls:trace_cntrl_32:1.4\
"

我想在ip:axi\u dma:7.1\和ip:axis\u data\u fifo:2.0\之间添加ip:sample:1.0\

anwser就在附近

使用该代码,您可以得到如下过程:

proc addtxtline {filename lineadd textadd} {
    # where filename: the file
    # lineadd: number of line to add - starting in zero
    # textadd: text to add
    set fp [open $filename]
    set lines [split [read $fp] "\n"]
    close $fp

    set lines [linsert $lines $lineadd $textadd]
    # Read a line with lindex, find a line with lsearch
    # Replace a line with lset, replace a range of lines with lreplace

    set fp [open $filename w]
    puts $fp [join $lines "\n"]
    close $fp 
}
假设您的文件是“settings.txt”,您可以这样调用函数:

addtxtline settings.txt 7  "ip:sample:1.0\\"
萨卢多斯


学分: