在Linux中,有几种有效的方法可以删除文件末尾的多行内容。以下是几种常用的方法:
# 删除最后100行(假设每行大约80个字符)
truncate -s -$((100*80)) filename
# 更精确的方法:先计算实际要保留的字节数
head -n -100 filename | wc -c | xargs -I {} truncate -s {} filename
# 删除最后100行(保留除最后100行外的所有内容)
head -n -100 filename > tempfile && mv tempfile filename
# 删除最后100行
sed -i -e :a -e '$d;N;101,$D;ba' filename
# 删除最后100行
awk -v n=100 'NR<=FNR-n' filename > tempfile && mv tempfile filename
vim filename
# 在vim中执行以下命令:
# :$-99,$d (删除倒数第100行到最后一行)
# :wq (保存并退出)
head
方法通常最有效率-i
选项的命令会直接修改原文件# 删除日志文件最后1000行(释放空间)
logfile="/var/log/app.log"
lines_to_remove=1000
head -n -$lines_to_remove "$logfile" > "$logfile.tmp" && \
mv "$logfile.tmp" "$logfile"
选择哪种方法取决于具体需求、文件大小以及个人偏好。对于日常使用,head -n -N
方法通常是最简单直接的解决方案。