从文件中删除最后一个空行并保存文件

时间:2017-04-06 08:04:58

标签: bash shell awk sed grep

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

编辑只删除空白结束行。

您唯一不使用sed无法读取整个文件的选项是stat文件获取大小,然后使用dd跳转到结束开始之前读。但是,告诉sed仅在最后一行操作,基本上就是这样。

答案 2 :(得分:0)

看看

Remove the last line from a file in Bash

编辑:我测试了

dd if=/dev/null of=<filename> bs=1 seek=$(echo $(stat --format=%s <filename> ) - $( tail -n1 <filename> | wc -c) | bc )

它可以满足您的需求