Как написать между двумя строками текста в существующем файле tcl? - PullRequest
1 голос
/ 10 мая 2019

Я хочу написать между двумя строками в существующем файле tcl.Например, я хочу написать некоторый текст между строками 41 и 42. Новый текст должен быть в строке 42, а старый текст в 42 должен идти до 43 и многократно, пока последняя строка не опустится на 1.

Я пробовал это, https://stackoverflow.com/a/37806536,, но текст заменяется.

Текущий:

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: sample: 1.0 \ inbetween ip: axi_dma: 7.1 \ и ip: axis_data_fifo: 2.0 \

1 Ответ

1 голос
/ 11 мая 2019

Ответчик был рядом, только следующий .

Используя этот код, вы можете получить процесс, подобный этому:

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\\"

Saludos,


Кредит: Donal Fellows

...