)
快速参考pr是一个文本格式化工具用于将纯文本文件转换为适合打印的格式——添加页眉、页号、分页、多列排版等。它诞生于行式打印机时代至今仍在系统报告生成、日志归档等自动化场景中发挥着重要作用。pr不是用来在屏幕上美化输出的那是column和fmt的工作它的定位是——把原始文本变成打印机直接能用的格式。命令语法pr [选项] [文件...]常用选项选项功能-n/--columnsN分成 N 列输出-l/--lengthN每页行数默认 66-h/--headerSTRING自定义页眉替换文件名-d/--double-space双倍行距-t/--omit-header省略页眉和页脚-w/--widthN页面宽度字符数默认 72-o/--indentN左缩进 N 个字符-N/--first-line-numberN起始行号-s/--separatorCHAR分栏分隔符默认 TAB-m/--merge并排显示多个文件每文件一列-e/--expand-tabs将 TAB 转为空格-r不显示文件无法打开时的警告N从第 N 页开始显示实战示例1. 基础格式化# 准备测试数据$seq1100numbers.txt# 默认格式化每页 66 行页眉含日期/文件名/页码$prnumbers.txt|head-102026-06-1410:00 numbers.txt Page112345# 自定义页眉$pr-hSystem Reportnumbers.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-o518152916310174111851219613207143. 并排显示多文件-m# 创建多个文件$catnames.txtEOF Alice Bob Carol Dave Eve EOF$catscores.txtEOF 95 87 92 78 88 EOF$catgrades.txtEOF A B A- C B EOF# 并排显示每文件一列$pr-m-tnames.txt scores.txt grades.txt Alice95A Bob87B Carol92A- Dave78C Eve88B# 带页眉的并排显示$pr-m-hStudent Reportnames.txt scores.txt grades.txt|head-52026-06-1410:00 Student Report Page1Alice95A Bob87B4. 页面控制# 自定义页面长度20 行一页$seq1100|pr-l20-hData Report|head-30# 第 1 页输出2026-06-1410:00 Data Report Page1123...1516# 空白到 20 行# 然后继续第 2 页# 自定义页宽$seq110|pr-t-w4012...# 从第 2 页开始显示$seq1200|pr2|head-10# 起始行号$seq110|pr-t-N100100101...1095. 实战场景# 场景1生成格式化的系统报告generate_report(){echo System Information echoHostname:$(hostname)echoDate:$(date)echoUptime:$(uptime-p)echoecho Disk Usage df-hechoecho Memory Usage free-hechoecho Top 10 Processes psaux--sort-%mem|head-11}generate_report|pr-hDaily System Report -$(date%Y-%m-%d)-o2report.txt# 场景2格式化日志文件用于打印$tail-50/var/log/syslog|pr-hRecent System Logs-o2printable_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-hls(1) Manualls_manual.txt6. 与其他格式化工具配合# pr 格式化 → lp 打印$pr-hInvoice #12345invoice.txt|lp# pr 格式化 → enscript 转换 → PDF$pr-hReportdata.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-hError Report-t-2-s | |lp发行版差异发行版包名默认安装所有 Linux 发行版coreutils是macOS内置 (BSD)是属于 GNU coreutils所有主流 Linux 发行版行为完全一致。与其他格式化工具对比工具定位特色pr打印页格式化页眉、页号、分页、多列并排fmt段落格式化控制行宽段落重排fold行折叠简单的定宽折行column表格列对齐智能列格式化支持 JSONnl行号灵活的行号格式a2ps专业打印语法高亮、边框、水印选型建议需要页眉页号和分页用pr需要段落重排用fmt需要表格美化用column需要语法高亮打印用a2ps。总结pr的核心能力是把文本变成适合打印的格式-n列数多列排版-m并排显示多个文件-h自定义页眉-l页面行数控制-t省略页眉管道中使用N从指定页开始虽然现代打印需求减少但在自动报告生成、日志归档、批量数据排版等场景中pr仍然是简洁高效的工具。当你的脚本需要生成看起来像那么回事的格式化输出时pr比手写格式化代码方便得多。