es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Insertar una cadena en una línea específica en un archivo utilizando tcl.

Quiero insertar una cadena en una línea específica, y sé el número de la línea.

Por ejemplo:

<h1>Aa<em>versión = Aa/45.21-a32</em>1</h1>

<h1>Aa<em>versión = Aa/47.21-a33</em>1</h1>

Aa<em>versión = Aa/45.27-a57</em>2 -> puedo obtener este número de línea n

y quiero insertar la línea <code>Aa/49.27-a54_1</code> en la línea n+1

y poner <code>Aaversión = Aa/45.27-a57_2</code> -> <code>#Aaversión = Aa/45.27-a57_2</code>

La salida sería así:

Aaversión = Aa/45.21-a321

Aaversión = Aa/47.21-a331

Aaversión = Aa/45.27-a572

Aaversión = Aa/49.27-a541

y mi código es

set Aa “”
set fp [open $file “r+”]
set lines [split [read $fp] \n]
set idx [lsearch -regexp $lines {^Aaversión} ]
regexp {Aa(.+)} [lindex $lines $idx] Aa
versión
set oldversión “#$Aaversión”
set newAa [gets stdin]
set newversión “Aaversión =$newAa ”
puts $oldversión -> reemplazar $Aaversión
puts $newversión
close $fp
“`

¿Cómo se pueden colocar en la línea correcta?
Gracias.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Puede utilizar el comando linsert para insertar la nueva línea en la posición correcta. La sintaxis para linsert es linsert list index element. En su caso, puede utilizar el siguiente comando para insertar la nueva línea:

    linsert $lines $idx+1 "Aa_version = Aa/49.27-a54_1"
    

Comments are closed.