news 2026/6/16 9:39:36

Linux命令-pr(格式化文本为打印格式)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux命令-pr(格式化文本为打印格式)

快速参考

pr是一个文本格式化工具,用于将纯文本文件转换为适合打印的格式——添加页眉、页号、分页、多列排版等。它诞生于行式打印机时代,至今仍在系统报告生成、日志归档等自动化场景中发挥着重要作用。

pr不是用来在屏幕上"美化输出"的(那是columnfmt的工作),它的定位是——把原始文本变成打印机直接能用的格式。

命令语法

pr [选项] [文件...]

常用选项

选项功能
-n/--columns=N分成 N 列输出
-l/--length=N每页行数(默认 66)
-h/--header=STRING自定义页眉(替换文件名)
-d/--double-space双倍行距
-t/--omit-header省略页眉和页脚
-w/--width=N页面宽度(字符数,默认 72)
-o/--indent=N左缩进 N 个字符
-N/--first-line-number=N起始行号
-s/--separator=CHAR分栏分隔符(默认 TAB)
-m/--merge并排显示多个文件(每文件一列)
-e/--expand-tabs将 TAB 转为空格
-r不显示文件无法打开时的警告
+N从第 N 页开始显示

实战示例

1. 基础格式化

# 准备测试数据$seq1100>numbers.txt# 默认格式化(每页 66 行,页眉含日期/文件名/页码)$prnumbers.txt|head-102026-06-1410:00 numbers.txt Page112345# 自定义页眉$pr-h"System Report"numbers.txt|head-102026-06-1410:00 System Report Page1# 省略页眉页脚(用于管道处理)$pr-tnumbers.txt|head-512345# 双倍行距$pr-dnumbers.txt|head-10# 每个内容行之间增加一个空行

2. 多列排版

# 分成 3 列显示$seq130|pr-t-3111212122231323414245152561626717278182891929102030# 分成 4 列$seq140|pr-t-4|head-1011121312122232313233341424345152535616263671727378182838919293910203040# 自定义分隔符(逗号)$seq120|pr-t-2-s','1,112,123,134,145,156,167,178,189,1910,20# 带缩进的多列$seq120|pr-t-3-o51815291631017411185121961320714

3. 并排显示多文件(-m)

# 创建多个文件$cat>names.txt<<'EOF' Alice Bob Carol Dave Eve EOF$cat>scores.txt<<'EOF' 95 87 92 78 88 EOF$cat>grades.txt<<'EOF' A B+ A- C+ B EOF# 并排显示(每文件一列)$pr-m-tnames.txt scores.txt grades.txt Alice95A Bob87B+ Carol92A- Dave78C+ Eve88B# 带页眉的并排显示$pr-m-h"Student Report"names.txt scores.txt grades.txt|head-52026-06-1410:00 Student Report Page1Alice95A Bob87B+

4. 页面控制

# 自定义页面长度(20 行一页)$seq1100|pr-l20-h"Data Report"|head-30# 第 1 页输出:2026-06-1410:00 Data Report Page1123...1516# 空白(到 20 行)# 然后继续第 2 页# 自定义页宽$seq110|pr-t-w4012...# 从第 2 页开始显示$seq1200|pr+2|head-10# 起始行号$seq110|pr-t-N100100101...109

5. 实战场景

# 场景1:生成格式化的系统报告generate_report(){echo"=== System Information ==="echo"Hostname:$(hostname)"echo"Date:$(date)"echo"Uptime:$(uptime-p)"echo""echo"=== Disk Usage ==="df-hecho""echo"=== Memory Usage ==="free-hecho""echo"=== Top 10 Processes ==="psaux--sort=-%mem|head-11}generate_report|pr-h"Daily System Report -$(date+%Y-%m-%d)"-o2>report.txt# 场景2:格式化日志文件用于打印$tail-50/var/log/syslog|pr-h"Recent System Logs"-o2>printable_log.txt# 场景3:将长列表转为多列便于查看$ls/usr/bin/|pr-t-4|head-20# 场景4:生成地址标签(两列格式)$cataddresses.txt|pr-t-2-w80-s" | "# 场景5:比较两个文件内容$pr-m-t-w80file1.txt file2.txt# 场景6:创建缩进的代码清单$catsource.c|pr-t-o8-n4# 场景7:格式化 man 页为纯文本$manls|col-b|pr-h"ls(1) Manual">ls_manual.txt

6. 与其他格式化工具配合

# pr 格式化 → lp 打印$pr-h"Invoice #12345"invoice.txt|lp# pr 格式化 → enscript 转换 → PDF$pr-h"Report"data.txt|enscript-o-|ps2pdf - report.pdf# pr → a2ps 格式化 → 打印$prdata.txt|a2ps-ooutput.ps# 转换 TAB 为空格后再格式化$expanddata.txt|pr-t# 多级格式化管道$cat/var/log/syslog|grepERROR|head-100|pr-h"Error Report"-t-2-s" | "|lp

发行版差异

发行版包名默认安装
所有 Linux 发行版coreutils
macOS内置 (BSD)

属于 GNU coreutils,所有主流 Linux 发行版行为完全一致。

与其他格式化工具对比

工具定位特色
pr打印页格式化页眉、页号、分页、多列并排
fmt段落格式化控制行宽,段落重排
fold行折叠简单的定宽折行
column表格列对齐智能列格式化,支持 JSON
nl行号灵活的行号格式
a2ps专业打印语法高亮、边框、水印

选型建议:需要页眉页号和分页用pr,需要段落重排用fmt,需要表格美化用column,需要语法高亮打印用a2ps

总结

pr的核心能力是"把文本变成适合打印的格式":

  • -n列数:多列排版
  • -m:并排显示多个文件
  • -h:自定义页眉
  • -l:页面行数控制
  • -t:省略页眉(管道中使用)
  • +N:从指定页开始

虽然现代打印需求减少,但在自动报告生成、日志归档、批量数据排版等场景中,pr仍然是简洁高效的工具。当你的脚本需要生成"看起来像那么回事"的格式化输出时,pr比手写格式化代码方便得多。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/16 9:31:56

STM8开发环境搭建:IAR EWSTM8安装配置与第一个LED工程实战

1. 项目概述&#xff1a;从零开始搭建STM8开发环境如果你手头有一块STM8系列的单片机开发板&#xff0c;比如常见的STM8S003F3&#xff0c;或者STM8L151&#xff0c;想要开始写点代码让它跑起来&#xff0c;那么你大概率绕不开一个开发工具——IAR Embedded Workbench for STM8…

作者头像 李华
网站建设 2026/6/16 9:28:49

【计算机毕业设计案例】基于 SpringBoot 的物流仓储运营管理系统设计与应用 顺丰仓储物资管控信息化系统的设计与开发(程序+文档+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/16 9:19:56

Claude API四档套餐能力边界与成本优化实战指南

1. 四档套餐不是“速度档位”&#xff0c;而是能力边界的分水岭 很多人第一次看到Claude的$20 Pro、$40 Max、$80 Max和$120 Ultra四档订阅时&#xff0c;下意识会类比手机流量包——“Pro是够用版&#xff0c;Max是畅享版&#xff0c;Ultra是尊享版”。这种理解在底层逻辑上就…

作者头像 李华
网站建设 2026/6/16 9:16:56

Web安全漏洞深度解析:目录穿越攻击原理、绕过技巧与防御实践

1. 项目概述&#xff1a;理解“目录穿越”的本质在Web安全领域&#xff0c;我们经常会遇到一些听起来很“技术”&#xff0c;但原理却相当直接的漏洞。“目录穿越”就是其中之一。我第一次在实战中遇到它&#xff0c;是在对一个内部管理系统进行授权测试时&#xff0c;发现一个…

作者头像 李华
网站建设 2026/6/16 9:13:51

Linux发行版EOL生命周期管理:安全、合规与迁移实战

1. 项目概述&#xff1a;当操作系统进入“退休年龄”&#xff0c;我们到底在管理什么&#xff1f;“End-of-Life Distributions”——这个标题乍看像一句技术讣告&#xff0c;实则直指开源世界里一个每天都在发生、却极少被系统性讨论的底层现实&#xff1a;Linux发行版的生命周…

作者头像 李华