在linux系统中,cat命令是最常用的文件查看工具之一,很多用户会疑惑cat是否可以直接查看文件的最后几行内容。实际上cat命令本身没有专门用于查看末尾行的内置参数,需要结合管道符或者其他参数组合来实现相关需求,同时也有更适配该场景的其他命令可供选择。

cat命令查看最后几行的实现方式
cat命令默认会输出文件的全部内容,要查看最后几行可以通过和tail命令结合使用,利用管道符传递输出内容。比如要查看test.txt文件的最后5行,命令如下:
# 查看test.txt文件的最后5行内容 cat test.txt | tail -n 5
这里先通过cat命令读取test.txt的全部内容,再通过管道符把内容传递给tail命令,tail命令的-n参数用于指定显示的行数,5就表示显示最后5行。
另外也可以结合tac命令(cat的反向拼写,用于反向输出文件内容)和head命令实现,先反向输出文件,再取前几行,就相当于原文件的最后几行:
# 查看test.txt文件的最后3行内容 tac test.txt | head -n 3
更适合查看末尾内容的tail命令
如果只是需要查看文件的最后几行,直接使用tail命令会比cat组合的方式更高效,因为tail命令本身就是为查看文件末尾内容设计的,不需要先读取全部文件内容。
tail命令的常用参数如下:
-n 数字:指定显示文件末尾的行数,比如tail -n 10 test.txt就是显示最后10行-f:实时跟踪文件末尾内容的变化,常用于查看日志文件的实时输出-c 数字:指定显示文件末尾的字节数,比如tail -c 100 test.txt显示最后100个字节
查看最后5行的直接命令示例:
# 直接查看test.txt最后5行,无需结合cat tail -n 5 test.txt
两种方式的对比
我们可以通过表格对比cat组合方式和直接使用tail命令的差异:
| 对比项 | cat组合方式 | 直接使用tail命令 |
|---|---|---|
| 实现逻辑 | 先读取全部文件内容再过滤末尾行 | 直接定位到文件末尾读取指定行数 |
| 大文件效率 | 较低,需要加载全部内容 | 较高,仅读取末尾部分内容 |
| 命令复杂度 | 较高,需要组合多个命令 | 较低,单个命令即可完成 |
| 适用场景 | 已经在使用cat输出内容,需要额外过滤末尾行时 | 单纯需要查看文件末尾内容时 |
常见问题说明
有用户会尝试用cat -n参数来查看最后几行,实际上-n参数只是给输出的所有行添加行号,并不会筛选末尾行,所以无法实现需求。如果一定要用cat命令单独实现查看最后几行,还可以结合wc -l统计总行数,再用sed命令定位行数:
# 先统计test.txt的总行数,假设为total,再显示从第(total-4)行到末尾的内容,即最后5行 total=$(cat test.txt | wc -l) cat test.txt | sed -n "$((total-4)),$p"
这种方式逻辑更复杂,实际使用中更推荐直接使用tail命令来完成查看文件最后几行的需求。