Seeking и truncating - твой друг. (Требуется Tcl 8,5 или более поздней версии.)
set f [open "theFile.txt" r+]
# Skip to where last newline should be; use -2 on Windows (because of CRLF)
chan seek $f -1 end
# Save the offset for later
set offset [chan tell $f]
# Only truncate if we're really sure we've got a final newline
if {[chan read $f] eq "\n"} {
# Do the truncation!
chan truncate $f $offset
}
close $f
Для удаления данных из где-нибудь кроме конца файла, то проще всего переписать файл (либо путем загрузки данных всех в памяти или потокового и преобразования к новому файлу, который вы перемещаете назад, причем последнее сложнее, но необходимо с большими файлами). Усечение может работать только в конце.
Что вы пробовали? Есть ли определенная часть проблемы, которую вы не понимаете, или вы просите нас написать код для вас? –