欢迎光临
我们一直在努力

Linux命令-pr命令详解:把文本变成“打印稿纸”(分页、分栏、页眉全掌握)

前言:pr 到底在干什么?

pr 的全称是 print / preformatter,它的职责是: 将文本文件或标准输入,转换成带页眉/页脚/分页/多栏的“可打印格式”(默认输出到 stdout)。

它不是编辑器(vim/nano),不是分页阅读器(less/more),也不是排版引擎(LaTeX/pandoc)。 它最适合的场景:

  • 把日志/报告整理成 带页码、带标题的打印稿,然后直接 pr … | lpr 送打印机
  • 把长列表(如 ls -la 的输出)排成 多栏,节约纸张/屏幕空间
  • 需要“固定每页行数 + 自动插入页眉”的轻量级预处理

注:你平时用 less 看文件是“原样浏览”;pr 是在生产一份新的排版输出。


目录

    • 前言:`pr` 到底在干什么?
    • 一、先看默认行为(最容易迷惑的地方)
    • 二、最常用选项(按功能分组)
      • 2.1 控制页长度与页眉(最实用)
      • 2.2 自定义页眉内容
      • 2.3 多栏排版(`pr` 的亮点)
      • 2.4 宽度与缩进(控制版面尺寸)
    • 三、完整工作流示例(可复现)
      • 3.1 准备测试数据
      • 3.2 对比几种模式
    • 四、常见坑位(提升文章深度的关键)
    • 五、什么时候用 `pr`,什么时候不用
    • 六、总结

一、先看默认行为(最容易迷惑的地方)

pr a.txt

输出会像这样:

Jan 20 14:03 a.txt Page 1

line1
line2

关键特征:

  • 默认加上 页眉:日期 文件名 Page N
  • 默认 每页 66 行(传统打印机一页的高度)
  • 页眉占用几行,所以正文并非从第 1 行开始
  • 输出直接打到 stdout(终端),看起来好像多了些空行

💡 初学建议:先加 -t 关掉页眉,更容易看清排版效果。


二、最常用选项(按功能分组)

2.1 控制页长度与页眉(最实用)

选项含义示例
-l N 设置每页行数为 N(默认 66) -l 40 每页 40 行
-t / –omit-header 省略页眉页脚(无页号、无文件名) -t 清爽输出
+FIRST_PAGE 从第 FIRST_PAGE 页开始输出 +2 跳过第一页

示例:把文件按每页 20 行排版,且不显示页眉

pr -l 20 -t a.txt


2.2 自定义页眉内容

选项含义
-h STRING 将页眉中的“文件名”替换为 STRING
-n[CHAR][WIDTH] 给输出行加行号(GNU 特有)

示例:自定义页眉为“日志报告”

pr -h "日志报告 2026-06-16" access.log

页眉变为:

Jun 16 10:21 日志报告 2026-06-16 Page 1


2.3 多栏排版(pr 的亮点)

pr -N FILE

将 FILE 内容排成 N 栏(横向填满再往下走)。

示例:三栏显示

pr -3 a.txt

常用搭配:

  • -t 去掉页眉
  • -l 48 缩短页高便于观察
  • -sCHAR 指定栏间分隔符

示例:三栏、用 | 分隔、无页眉

pr -3 -t -s'|' a.txt

注意:pr 的多栏是 先横填再纵排(rows filled across columns),不是先竖排完第一栏再到第二栏。如需纵向优先,请用 column -x 或其他工具。


2.4 宽度与缩进(控制版面尺寸)

选项含义
-w WIDTH 输出总宽度(字符数)
-i INDENT 每页左侧缩进 N 个空格

示例:输出宽度 72 字符,左缩进 4 格

pr -w 72 -i 4 -t a.txt


三、完整工作流示例(可复现)

3.1 准备测试数据

seq -w 1 120 | sed 's/^/Line /' > demo.txt

3.2 对比几种模式

# 默认(带页眉)
pr demo.txt | head -20

# 关掉页眉
pr -t demo.txt | head -20

# 三栏 + 无页眉 + 页长40行
pr -3 -t -l 40 demo.txt | head -40

# 自定义标题 + 每页50行
pr -h "Demo Lines" -l 50 demo.txt | head -20

你将直观感受到:

  • 默认输出有“Page 1”“Page 2”的分页感
  • -t 去掉装饰后,正文被切成“块”
  • 多栏模式下,内容先横着填满一行再换行

四、常见坑位(提升文章深度的关键)

  • 把 pr 当成 less 用 pr 不是浏览工具,它在重新排版。想翻页用 less。

  • 误解 -l 20 等于正文 20 行 页眉/页脚会占用行数。想精确控制正文行数,先用 -t 再去掉页眉,再用 -l。

  • 多栏顺序不符合预期 pr -N 是“横向填满再向下”,不是纵向先排完第一栏。如果需要纵向排列,考虑 column -x。

  • GNU vs BSD 差异 本文基于 GNU coreutils(Linux 默认)。macOS 的 BSD 版 pr 选项略有不同(如 -s 默认分隔符行为),写教程时应注明环境。

  • -s 不带参数时含义模糊 显式写出分隔符,例如 -s'|' 或 -s' ',避免歧义。


  • 五、什么时候用 pr,什么时候不用

    场景推荐工具
    需要页眉、页号、分页、多栏的打印稿 pr
    只想在终端翻页查看 less
    把表格对齐(TSV/CSV) column -t
    生成正式 PDF 文档 pandoc / enscript / a2ps

    六、总结

    • pr 的本质:给文本穿上“打印稿纸”的外衣(页眉、分页、多栏)
    • 最常用组合:pr -t -l 50 -3 -s'|' file(无页眉、每页50行、三栏、竖线分隔)
    • 输出到文件:pr file > output.txt
    • 送打印机:pr file | lpr

    适用环境:任何 Linux/Unix 系统(GNU coreutils 版本),特别适合需要批量处理文本打印或归档的场景。


    赞(0)
    未经允许不得转载:171主机测评 » Linux命令-pr命令详解:把文本变成“打印稿纸”(分页、分栏、页眉全掌握)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址