-2

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

aaa 11
bbb 12
cc 14
newline character

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

4

1 回答 1

1

寻找截断是你的朋友。(需要 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

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

于 2013-08-15T01:01:07.787 回答