当前位置: 首页 > ai >正文

SHELL命令pr

文章目录

      • 一、pr 命令简介
      • 二、常用选项
      • 三、实用示例
        • 1. 基本使用:分页显示文件
        • 2. 不显示页眉页码(简洁输出)
        • 3. 添加行号
        • 4. 设置页面大小
        • 5. 多列输出
        • 6. 合并多个文件并列显示
        • 7. 自定义页眉
        • 8. 从标准输入读取
        • 9. 双倍行距
      • 四、实际应用场景
      • 五、注意事项
      • 六、总结

在 Bash 中,pr 命令是一个用于格式化文本文件以便打印的工具。它最初设计用于将文本文件转换为适合打印的格式,支持多列输出、页眉、页码、行号等功能。虽然现代系统中使用 pr 的频率较低(更多使用 catlessenscript 等工具),但在某些场景下,pr 依然非常实用。


一、pr 命令简介

pr 是 “print” 的缩写,主要用于将文本文件分页,并添加页眉、页码等信息,使其更适于打印或阅读。

基本语法:

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

如果没有指定文件,pr 会从标准输入读取。


二、常用选项

选项说明
-l N设置每页的行数为 N(默认是 66 行)
-w N-W N设置页面宽度为 N 个字符(默认是 72 或 80)
-t不输出页眉和页码(精简模式)
-n添加行号(每行前加行号)
-N指定行号的宽度(如 -n4 表示 4 位宽行号)
-m多文件合并打印(并排显示多个文件)
-2, -3, …指定输出为 2 列、3 列等
-s[分隔符]列之间使用指定分隔符(默认是制表符 \t
+N从第 N 页开始打印
-d使用双倍行距输出
-h "标题"自定义页眉标题(替换默认的文件名和时间)

三、实用示例

1. 基本使用:分页显示文件
pr file.txt

输出会分为每页 66 行,带有页眉(文件名、日期、页码)。

2. 不显示页眉页码(简洁输出)
pr -t file.txt

适合用于后续管道处理,避免多余信息。

3. 添加行号
pr -n file.txt

在每行前面加上行号(默认 5 位宽)。

4. 设置页面大小
pr -l 50 -w 100 file.txt

每页 50 行,每行最多 100 字符。

5. 多列输出
pr -2 file.txt

将文件内容分为两列显示。

pr -3 -s file.txt

三列输出,列之间用空格分隔(-s 默认用空格或制表符)。

6. 合并多个文件并列显示
pr -m file1.txt file2.txt file3.txt

将多个文件并排打印(每文件一列),适合对比内容。

7. 自定义页眉
pr -h "My Report" data.txt

页眉显示为 “My Report” 而不是文件名。

8. 从标准输入读取
cat file.txt | pr -t | less

将文件内容通过管道传给 pr,去掉页眉后用 less 查看。

9. 双倍行距
pr -d file.txt

每行之间增加一个空行,便于阅读或批注。


四、实际应用场景

  • 打印代码或日志:使用 pr -n 添加行号,方便引用。
  • 对比文件:用 pr -m file1 file2 并列显示两个文件。
  • 生成报告:结合 -h 和多列输出,美化文本输出。
  • 预处理文本:在交给 lpr(打印命令)之前用 pr 格式化。

例如,打印带行号的脚本:

pr -n -h "backup.sh" backup.sh | lpr

五、注意事项

  • pr 默认每页 66 行(模仿传统打印机的一页),可通过 -l 修改。
  • 多列模式下,如果文本过长会被截断,注意使用 -w 调整宽度。
  • pr 不会修改原始文件,只是格式化输出。

六、总结

pr 是一个轻量级但功能丰富的文本格式化工具,适合在终端中对文本进行排版,尤其适用于打印准备。虽然现代 GUI 打印更常见,但在服务器环境或脚本中,pr 依然有其价值。

💡 提示:结合 prlprlessgrep 等命令,可以构建强大的文本处理流水线。


如需查看完整帮助,运行:

pr --help
man pr
http://www.xdnf.cn/news/19407.html

相关文章:

  • 【C++】 Vector容器操作全解析
  • OpenHarmony智能语音框架深度拆解:从VAD到唤醒词打造你的AI语音智能体
  • 第8篇c++Expression: (L“Buffer is too small“ 0
  • 20.30 QLoRA微调终极指南:Hugging Face参数优化实战,24GB显存直降50%性能不减
  • 【JavaScript】async/await 与 Fetch 传参,PUT,PATCH,文件上传,批量删除等前端案例
  • 二、Git基础命令速查表
  • Goframe 框架下HTTP反向代理并支持MCP所需的SSE协议的实现
  • leetcode算法刷题的第二十三天
  • Windows Qt5.15.17源码使用VS2019编译安装
  • Linux自动化构建工具-make/Makefile
  • C#/.NET/.NET Core技术前沿周刊 | 第 52 期(2025年8.25-8.31)
  • 【论文精读】基于YOLOv3算法的高速公路火灾检测
  • Jenkins 自动构建Vue 项目的一个大坑
  • 计算机毕设选题:基于Python+Django的健康饮食管理系统设计【源码+文档+调试】
  • 【LeetCode 155】—最小栈 - 详解与实现
  • Apache Commons ConvertUtils
  • 电科金仓 KFS 场景化实践路径解析:从行业场景落地看技术价值转化
  • Redis面试重点-2
  • std::thread详解
  • JDK14安装步骤及下载(附小白详细教程)
  • 在Unity中,让子物体不随父物体移动或转动的方法!
  • 数据库索引abc,请问查询哪些字段能命中索引
  • APB验证VIP Agent的各个组件之间的通信
  • 【C++ 】string类:深拷贝与浅拷贝解析
  • ​​告别通用模型局限:5步微调实战指南​
  • 数值分析——非线性方程与方程组的数值解法之迭代法
  • [灵动微电子 MM32BIN560CN MM32SPIN0280]读懂电机MCU 模拟输入运放放大
  • NCCL-TEST ib集群测试UCX代替方案
  • unity tilemap grid 的中心轴
  • Linux中卸载和安装Nginx