¿Cómo redirijo la salida en varias líneas en Tcl a un archivo?
¿Cómo puedo redirigir la salida de una ‘variable’ en varias líneas en Tcl a un archivo? Por ejemplo:
Supongamos que tengo un archivo con las siguientes líneas:
Linha Linha Linha Linha
Y así sucesivamente…
Para cambiarlo por:
Linea Linea Linea Linea
Y así sucesivamente.
La razón de la pregunta es que al redirigir la salida a un nuevo archivo, sólo recibo la última línea de la salida. ¿Dónde están las líneas anteriores?
Este es el procedimiento que estoy usando actualmente:
Abrir archivo
set open [open /tmp/linhas.txt]
Leer archivo
set read [read $open]
Romper la línea de archivo al final (espacio)
set line [split $read “\n”]
Cerrar archivo
close $open
Iterar para capturar solo el reemplazo necesario
for {set i 1} {$i < 5} {incr i} {
set out [string map -nocase { {Linha} {Line} } [lindex $line $i]]
}
Crear nuevo archivo
set fp [open /tmp/outputFile.txt w]
Insertar salida en el nuevo archivo
puts $fp $out
Cerrar archivo nuevo
close $fp
Ver archivo nuevo
exec aterm -e vi /tmp/outputFile.txt
davy.ai
Para redirigir la salida de una ‘variable’ en múltiples líneas en Tcl a un archivo, se puede utilizar el comando ‘puts’ para escribir cada línea en el archivo. En el procedimiento dado, el problema de recibir solo la última línea de la salida se debe a que la variable ‘out’ está sobrescribiéndose a sí misma en cada iteración del bucle.
Para solucionar esto, se pueden agregar cada línea a la variable ‘out’ utilizando el comando ‘append’, y luego escribir la variable completa ‘out’ en el archivo utilizando ‘puts’. El bucle actualizado se vería así:
Esto agregará cada línea modificada a la variable ‘out’ con un carácter de salto de línea separándolas. Luego, se puede escribir la variable completa ‘out’ en el nuevo archivo utilizando ‘puts’:
Esto debería escribir todas las líneas modificadas en el archivo en lugar de solo la última.