约 9495 字

约 47 分钟

#Bash 的 pr 命令

pr [OPTION]... [FILE]...

功能

对文件进行分页或分栏处理以进行打印。

类型

可执行文件(/usr/bin/pr),属于 coreutils。

参数

  • OPTION 选项:
    • +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]

      • 从指定的第一页开始打印(可选指定最后一页)。
    • -COLUMN, --columns=COLUMN

      • 以 COLUMN 列输出,并按列 自上而下 排列(除非使用 -a)。
      • 平衡每页各列的行数。
    • -a, --across

      • 按 横向 排列列,而不是纵向。需配合 -COLUMN 使用。
    • -c, --show-control-chars

      • 使用帽子符号(^G)和八进制反斜线表示控制字符。
    • -d, --double-space

      • 输出结果双倍行距。
    • -D, --date-format=FORMAT

      • 使用 FORMAT 指定页眉中的日期格式。
    • -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]

      • 将输入中的 CHAR(默认 TAB)扩展为给定宽度(默认 8)。
    • -F, -f, --form-feed

      • 用换页符代替换行符分隔页面:

        • 使用 -F → 页眉占 3 行
        • 未使用 -F → 页眉和页脚共占 5 行
    • -h, --header=HEADER

      • 在页眉使用居中的 HEADER 替代文件名。
      • 使用 -h "" 输出空白行(不要写成 -h"")。
    • -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]

      • 将空格转换为 CHAR(默认 TAB),宽度为 WIDTH(默认 8)。
    • -J, --join-lines

      • 合并完整行;关闭 -W 的行截断;不进行列对齐。
      • 可使用 --sep-string=STRING 设置列分隔符。
    • -l, --length=PAGE_LENGTH

      • 设置页面长度为 PAGE_LENGTH(默认 66 行)。
      • 默认正文为 56 行;使用 -F 时正文为 63 行。
      • 如果长度 ≤ 10,则隐含启用 -t(不显示页眉页脚)。
    • -m, --merge

      • 并行打印多个文件,每个文件一列。
      • 截断行;若配合 -J 则合并完整行。
    • -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]

      • 为行编号。
      • DIGITS(默认 5)为编号位数;SEP(默认 TAB)为分隔符。
      • 默认从文件第一行开始编号。
    • -N, --first-line-number=NUMBER

      • 设置输出第一页第一行从 NUMBER 开始编号(参考 +FIRST_PAGE)。
    • -o, --indent=MARGIN

      • 每行前缩进 MARGIN 个空格。
      • 不影响 -w 与 -W。
      • MARGIN 会加到页面宽度中。
    • -r, --no-file-warnings

      • 当文件无法打开时不显示警告。
    • -s[CHAR], --separator[=CHAR]

      • 用单个 CHAR 分隔列。
      • CHAR 默认是 TAB(无 -w 时)或“无字符”(使用 -w 时)。
      • 使用 -s 会关闭所有列模式(-COLUMN、-a、-m)的行截断,除非设置了 -w。
    • -S[STRING], --sep-string[=STRING]

      • 使用 STRING 分隔列。
      • 默认分隔符:
        • 使用 -J → TAB
        • 未使用 -J → 空格(相当于 -S" ")
      • 不影响列模式。
    • -t, --omit-header

      • 不输出页眉和页脚。
      • 页面长度 ≤ 10 时自动启用。
    • -T, --omit-pagination

      • 不输出页眉和页脚,并忽略输入中的分页符。
    • -v, --show-nonprinting

      • 使用八进制反斜线表示不可打印字符。
    • -w, --width=PAGE_WIDTH

      • 设置页面宽度为 PAGE_WIDTH(默认 72)。
      • 仅用于多列文本输出。
      • 使用 -s 会关闭默认页宽 72 的限制。
    • -W, --page-width=PAGE_WIDTH

      • 始终设置页面宽度为 PAGE_WIDTH(默认 72)。
      • 截断行(除非使用 -J)。
      • 与 -S 和 -s 不冲突。
    • --help - 显示帮助

    • --version - 显示版本

  • FILE - 文件列表,如果没有这个参数或指定为 -,则读取标准输入

#示例

$ man pr > 1.txt            # 创建文件
$ pr -n -l 20 1.txt +3:5    # 打印 1.txt 显示行号 每页 20 行 显示第三页到第五页


2025-11-23 14:09                      1.txt                       Page 3


   21	              output COLUMN columns and print columns down, unless -a is used.
   22	              Balance number of lines in the columns on each page
   23
   24	       -a, --across
   25	              print columns across rather than down, used together with  -COL‐
   26	              UMN
   27
   28	       -c, --show-control-chars
   29	              use hat notation (^G) and octal backslash notation
   30







2025-11-23 14:09                      1.txt                       Page 4


   31	       -d, --double-space
   32	              double space the output
   33
   34	       -D, --date-format=FORMAT
   35	              use FORMAT for the header date
   36
   37	       -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]
   38	              expand input CHARs (TABs) to tab WIDTH (8)
   39
   40	       -F, -f, --form-feed







2025-11-23 14:09                      1.txt                       Page 5


   41	              use  form  feeds  instead  of  newlines  to separate pages (by a
   42	              3-line page header with -F or a 5-line header and trailer  with‐
   43	              out -F)
   44
   45	       -h, --header=HEADER
   46	              use  a centered HEADER instead of filename in page header, -h ""
   47	              prints a blank line, don't use -h""
   48
   49	       -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]
   50	              replace spaces with CHARs (TABs) to tab WIDTH (8)






#推荐阅读

#手册

更新: 2026/1/18

作者: PlanC

创建: 2025/11/23