在linux系统运维和日常使用中,读取文件前几行是高频操作需求,比如查看配置文件头部说明、日志文件最新记录、脚本开头注释等。系统提供了多个原生命令可以高效实现这个功能,不同命令的适用场景和参数设置略有区别,下面逐一介绍具体用法。

使用head命令读取文件前几行
head是linux系统自带的原生命令,专门用于查看文件的开头部分内容,默认情况下会输出文件的前10行,也可以通过参数自定义输出的行数,是最常用的方法。
基本语法
head命令的基础语法如下:
# 默认输出文件前10行 head 文件名 # 指定输出前n行,n为具体数字 head -n n 文件名 # 也可以简化写成 -n 的形式,比如输出前3行 head -3 文件名
操作示例
假设当前目录下有名为test.txt的文本文件,内容如下:
# test.txt内容 第一行内容 第二行内容 第三行内容 第四行内容 第五行内容 第六行内容 第七行内容 第八行内容 第九行内容 第十行内容 第十一行内容 第十二行内容
如果要读取该文件的前3行,执行以下命令:
head -3 test.txt # 输出结果: # 第一行内容 # 第二行内容 # 第三行内容
使用cat命令结合管道读取前几行
cat命令用于查看文件全部内容,结合管道符和head命令也可以实现读取前几行的效果,适合在已经使用cat查看文件的场景下快速调整。
操作示例
同样以test.txt为例,读取前5行的命令如下:
cat test.txt | head -5 # 输出结果: # 第一行内容 # 第二行内容 # 第三行内容 # 第四行内容 # 第五行内容
使用sed命令读取文件前几行
sed是流编辑器,也可以用来筛选文件的前n行内容,通过指定行号范围实现输出控制。
基本语法
sed命令读取前n行的语法如下:
# 输出文件前n行,n为具体数字 sed -n '1,n p' 文件名
操作示例
读取test.txt的前4行:
sed -n '1,4 p' test.txt # 输出结果: # 第一行内容 # 第二行内容 # 第三行内容 # 第四行内容
使用awk命令读取文件前几行
awk是文本处理工具,通过判断行号也可以输出文件的前几行内容。
基本语法
awk命令读取前n行的语法如下:
# 输出文件前n行,n为具体数字 awk 'NR<=n' 文件名
操作示例
读取test.txt的前6行:
awk 'NR<=6' test.txt # 输出结果: # 第一行内容 # 第二行内容 # 第三行内容 # 第四行内容 # 第五行内容 # 第六行内容
不同方法对比
以下是几种方法的特性对比:
| 方法 | 优势 | 适用场景 |
|---|---|---|
| head命令 | 语法简单,执行效率高,原生支持行数指定 | 常规读取文件前几行需求 |
| cat+head | 适合已经使用cat命令的场景,灵活组合 | 管道组合操作的场景 |
| sed命令 | 支持更复杂的行筛选规则 | 需要同时做其他文本处理的场景 |
| awk命令 | 支持复杂的文本逻辑判断 | 需要结合其他字段处理的场景 |
注意事项
- 如果文件行数小于指定的读取行数,所有命令都会输出文件的全部内容,不会报错。
- head命令的-n参数可以省略,直接写数字即可,比如
head -5 test.txt和head -n 5 test.txt效果一致。 - 使用sed命令时,行号范围的写法是单引号包裹,p表示打印,不能省略。
- 使用awk命令时,NR是内置变量,表示当前处理的行号,判断条件要写对。