用 sed 打印文件前 N 行需使用 sed -n '1,Np' filename,必须加 -n 抑制默认输出,否则会重复打印;该写法通用可靠,优于 head 的优势在于可与其他 sed 命令链式组合处理。

用 sed 打印文件前几行,核心是用地址范围配合 -n 选项加 p 命令,避免默认输出全部内容。
打印前 N 行(比如前 5 行)
直接指定行号范围:
-
sed -n '1,5p' filename—— 打印第 1 到第 5 行(含头尾) - 把
5换成你要的数字即可,如前 3 行就写'1,3p'
更简洁的写法(适用于较新版本 sed)
部分 GNU sed 支持 ~ 步长语法,但打印“前 N 行”仍推荐用 1,Np;不过若想强调“从第 1 行开始、每行都取直到第 N 行”,1,5p 最通用可靠。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
注意 -n 选项不能省略
不加 -n 会先输出匹配行,再把整文件刷一遍:
-
sed '1,5p' filename→ 实际输出 5 行 + 全文件(共重复 + 多余) -
sed -n '1,5p' filename→ 只输出那 5 行,干净准确
补充:和其他命令对比
虽然 head -n 5 filename 更直观,但 sed 的优势在于后续可无缝衔接其他操作(如替换、过滤后再取前几行):
- 例如:只取包含
error的前 3 行 →sed -n '/error/{x;/^$/!{x;p;};x;s/^/x/;}' filename | sed -n '1,3p'(稍复杂,但可组合) - 或更常用写法:
grep 'error' filename | head -3(语义清晰,推荐日常用)


















