pr 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,聚焦
pr——文本处理命令族(见文本处理与搜索命令族)。在还流行把文本送打印机、或需要生成带页眉页码的"像样文档"时,pr 是标准的预排版工具。
pr 把文本分页:自动加页眉(日期/文件名/页码)、控制每页行数,还能分栏、加行号,输出成打印机友好的格式。
一、基本用法
bash
pr file.txt # 默认每页 66 行,带"日期 文件名 页码"页眉
pr -h "月度报告" file.txt # -h 自定义页眉标题
pr -l 50 file.txt # -l 设每页行数默认页眉含日期、文件名、页码,底部留空行——这是老式打印机的标准版式。
-h可以把左边换成你自己的标题,适合出正式点的材料。
二、分栏与行号
bash
pr -2 file.txt # -2 双栏排版
pr -n file.txt # -n 加行号
pr -m a.txt b.txt # -m 多文件并排(合并列对比)
-2/-3做多栏,省纸也好读;-n加行号便于引用;-m把多个文件左右并排,做对照阅读很方便(类似 diff 的并排但更"打印向")。
三、配合打印与导出
bash
pr -h "日志" access.log | lpr # 先排版再送打印机
pr file.txt > file.paginated.txt # 或落盘成带页眉的文件在传统 CUPS 打印链路里,
pr | lpr是标准组合:pr 负责版式、lpr 负责投递打印队列。现在更多是把 pr 的输出重定向成文件,拿到带页码的干净副本。
四、踩话:分页会插入空行
bash
# pr 会在每页之间填空白行凑满页高,纯文本管道处理时要留意
pr file.txt | wc -l # 行数会比原文件多(多了页眉/页脚空白)如果你把 pr 的输出再喂给别的文本工具,要记得它插入了页眉和空白行,行数和原始文件对不上。纯内容处理别用 pr,直接用 cat/nl 之类即可。
五、实战:把脚本输出整理成可归档副本
bash
./run_report.sh | pr -h "每日报表 $(date +%F)" > report-$(date +%F).txt一句话总结
pr = 文本打印预排版:自动加日期/文件名/页码页眉,-h 自定义标题、-l 设页高、-2 分栏、-n 行号;常接 lpr 打印。注意它会插空白行,纯管道处理别用它——加行号可用 nl。