如何从TCL中的文件中删除最后一个换行符

时间:2013-08-14 12:53:32

标签: tcl

我需要一个代码才能从TCL中的文件中删除最后一个换行符。 假设一个文件

aaa 11
bbb 12
cc 14
newline character

现在如何从TCl中的文件中删除该换行符 请帮助我!

1 个答案:

答案 0 :(得分:0)

Seekingtruncating是你的朋友。 (需要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

要从文件末尾以外的任何地方删除数据,最简单的方法是重写文件(通过将数据全部加载到内存中或通过流式转换并转换为您移动的新文件回来,后者更难,但需要大文件)。截断只能在最后工作。