2017-04-06 172 views
0

如何删除文件的最后一行而不读取整个文件或在任何临时文件中重写它。我不想使用sed,因为它将整个文件读入内存。 最后有一个空行。我想删除它并只将更改保存到该文件,以便文件最后不包含空行。从文件中删除最后一个空行并保存文件

回答

1

我能想到的最简单的方法是:

sed -i '${/^$/d}' filename 

编辑只删除空白端线。

您唯一的选择不使用sed不会读取整个文件是stat该文件获取大小,然后使用dd跳到最后才开始阅读。但是,告诉sed只能在最后一行操作,基本上就是这样。

+0

SED -i -u ... -u意味着* *缓冲,因此降低了内存使用 – NeronLeVelu

+0

在这种情况下,由于你跳到最后,你肯定会想要使用缓冲读取来加速进程,特别是对于大文件。 –

+0

缓冲速度写入过程但问题是这里的内存不处理速度说OP – NeronLeVelu

1

简单的sed命令来删除最后一行的内容:

sed '$d' <file> 

这里在sed $是最后一行。

你可以试试awk命令:

awk 'NR > 1{print t} {t = $0}END{if (NF) print }' file 

使用cat:

cat file.txt | head -n -1 > new_file.txt 
相关问题