插件窝 干货文章 Linux快速删除文件末尾行的操作步骤

Linux快速删除文件末尾行的操作步骤

文件 方法 txt file 725    来源:    2025-04-09

Linux快速删除文件末尾行的操作步骤

在Linux系统中,有几种快速删除文件末尾行的方法。以下是几种常用且高效的方法:

方法1:使用truncate命令(原地修改,不创建新文件)

truncate -s -"$(tail -n1 file.txt | wc -c)" file.txt

这个命令会: 1. 计算最后一行的字节数 2. 从文件末尾截去相应字节数

方法2:使用sed命令

sed -i '$d' file.txt

-i 表示原地修改文件,$d 表示删除最后一行

方法3:使用head命令(适合大文件)

head -n -1 file.txt > tmp.txt && mv tmp.txt file.txt

这会: 1. 显示除最后一行外的所有内容 2. 将结果重定向到临时文件 3. 用临时文件替换原文件

方法4:使用awk命令

awk 'NR>1{print prev} {prev=$0}' file.txt > tmp.txt && mv tmp.txt file.txt

方法5:使用ed编辑器(适合脚本操作)

ed -s file.txt <<< $'$-1,$d\nw\nq'

注意事项

  1. 对于重要文件,建议先备份再操作
  2. 如果文件很大,方法2和方法3可能更高效
  3. 如果要删除最后N行,可以修改命令:
    • sed: sed -i '$N,$d' file.txt (删除最后N行)
    • head: head -n -N file.txt > tmp.txt (删除最后N行)
  4. 如果文件末尾有空行,可能需要先处理空行

删除最后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可能更高效。