在Linux系统中,有几种快速删除文件末尾行的方法。以下是几种常用且高效的方法:
truncate -s -"$(tail -n1 file.txt | wc -c)" file.txt
这个命令会: 1. 计算最后一行的字节数 2. 从文件末尾截去相应字节数
sed -i '$d' file.txt
-i
表示原地修改文件,$d
表示删除最后一行
head -n -1 file.txt > tmp.txt && mv tmp.txt file.txt
这会: 1. 显示除最后一行外的所有内容 2. 将结果重定向到临时文件 3. 用临时文件替换原文件
awk 'NR>1{print prev} {prev=$0}' file.txt > tmp.txt && mv tmp.txt file.txt
ed -s file.txt <<< $'$-1,$d\nw\nq'
sed -i '$N,$d' file.txt
(删除最后N行)head -n -N file.txt > tmp.txt
(删除最后N行)# 删除最后5行
sed -i '1,$N,$d' file.txt # 方法1
head -n -5 file.txt > tmp.txt && mv tmp.txt file.txt # 方法2
选择哪种方法取决于您的具体需求和文件大小。对于小文件,sed通常最简单;对于大文件,head或truncate可能更高效。