Pr:对文件进行分页或列排版以供打印

来自泡泡学习笔记
跳到导航 跳到搜索

pr将每个文件('-'表示标准输入),或者如果未指定文件,则将标准输入写入到标准输出,进行分页并可选择以多列格式输出;可选择合并所有文件,并以并行方式打印,每列一个文件。简介:

pr [option]… [file]…


默认情况下,每页打印一个5行的页眉:两个空行;一行包含日期、文件名和页数;再加上两个空行。还会打印一个由五个空行组成的页脚。默认的页长是66行。因此,默认的文本行数是56行。页眉的文本行采用'date string page'的形式,其中字符串周围插入空格,使行占满整个页面宽度。这里,date是日期(有关详细信息,请参见-D或--date-format选项),string是居中的页眉字符串,而page标识页码。LC_MESSAGES语言环境类别会影响页码的拼写;在默认的C语言环境下,页码为“Page number”,其中number为十进制页码。


退出状态为零表示成功,非零值表示失败。


输入中的换页符会导致输出中的分页。多个换页符会产生空白页。


列是等宽的,用可选的字符串(默认为“空格”)分隔。对于多列输出,行将始终被截断为页面宽度(默认为72),除非使用-J选项。对于单列输出,默认情况下不会发生行截断。在这种情况下,使用-W选项截断行。


该程序接受以下选项。还请参见常见选项。


'+first_page[:last_page]'

'--pages=first_page[:last_page]'

从第first_page页开始打印,并在last_page页停止。缺少':last_page'意味着到达文件末尾。在估计跳过页数时,输入文件中的每个换页符都会产生一个新的页面。具有和没有'+first_page'的页面计数是相同的。默认情况下,计数从输入文件的第一页开始(而不是第一页打印)。行编号可以通过-N选项进行修改。


'-column'

'--columns=column'

对于每个单独的文件,生成column列的输出(默认为1),并进行列的打印,除非使用-a选项。随着column的增加,列宽会自动减小;除非同时使用-W/-w选项来增加page_width。此选项可能会导致某些行被截断。每个页面上的列中的行数是平衡的。对于多列文本输出,-e和-i选项会打开。结合-J选项,关闭列对齐和行截断。整行长度的文本以自由字段格式连接,-S选项可以设置字段分隔符。-column选项不能与-m选项一起使用。


'-a'

'--across'

对于每个单独的文件,横向打印列而不是纵向。必须使用-column选项,并且column必须大于1。如果一行太长无法适应列中,它会被截断。


'-c'

'--show-control-chars'

使用帽符号表示打印控制字符(例如,'^G');使用八进制反斜杠表示打印其他不可打印字符。默认情况下,不会更改非打印字符。


'-d'

'--double-space'

将输出双倍间距。


'-D format'

'--date-format=format'

使用format格式化页眉日期,格式与命令'date +format'相同。请参阅date:打印或设置系统日期和时间。除了以'%'开头的指令,format中的字符会原样打印。您可以使用此选项指定页眉日期的任意字符串,例如,--date-format="星期一早上"。


默认的日期格式是'%Y-%m-%d %H:%M'(例如,'2020-07-09 23:59');但如果设置了POSIXLY_CORRECT环境变量,并且LC_TIME语言环境类别指定了POSIX语言环境,则默认格式为'%b %e %H:%M %Y'(例如,'Jul 9 23:59 2020')。


时间戳根据由TZ环境变量指定的时区规则列出,如果未设置TZ,则根据系统默认规则列出。有关在GNU C库参考手册中使用TZ指定时区的信息,请参阅“使用TZ指定时区”。


'-e[in-tabchar[in-tabwidth]]'

'--expand-tabs[=in-tabchar[in-tabwidth]]'

将输入中的制表符扩展为空格。可选参数in-tabchar是输入制表符(默认为制表符字符)。第二个可选参数in-tabwidth是输入制表符的宽度(默认为8)。


'-f'

'-F'

'--form-feed'

使用换页符而不是换行符分隔输出页面。这不会改变默认的页面长度为66行。


'-h header'

'--header=header'

将页眉中的文件名替换为居中字符串header。在使用shell时,header应该被引用,并且应该与-h之间用空格分隔。


'-i[out-tabchar[out-tabwidth]]'

'--output-tabs[=out-tabchar[out-tabwidth]]'

在输出中将空格替换为制表符。可选参数out-tabchar是输出制表符(默认为制表符字符)。第二个可选参数out-tabwidth是输出制表符的宽度(默认为8)。


'-J'

'--join-lines'

合并完整长度的行。与-column选项、-a -column选项或-m选项一起使用。关闭-W/-w行截断;不使用列对齐;可以与--sep-string[=string]一起使用。-J选项(连同-W和--sep-string选项)是为了解开旧的(符合POSIX标准的)-w和-s选项以及三个列选项之间的混淆。


'-l page_length'

'--length=page_length'

将页面长度设置为page_length(默认为66)行,包括页眉[和页脚]的行。如果page_length小于或等于10,则会省略页眉和页脚,就像使用了-t选项一样。


'-m'

'--merge'

将所有文件合并并以并行方式打印,每个文件占据一列。如果一行太长而无法适应列中,则会被截断,除非使用了-J选项。可以使用--sep-string[=string]。某些文件中的空白页(设置了分页符)会产生空白列,仍然由字符串标记。结果是在整个合并文件中连续编号和列标记。完全空的合并页不显示分隔符或行号。默认的页眉变为'date page',中间插入空格;可以与-h或--header选项一起使用,以填充中间的空白部分。


'-n[number-separator[digits]]'

'--number-lines[=number-separator[digits]]'

提供digits位行编号(digits的默认值为5)。对于多列输出,编号占据每个文本列的前digits列位置,或者仅占据-m输出的每行位置。对于单列输出,编号与-m一样位于每行之前。行号的默认计数从输入文件的第一行开始(而不是第一行打印的行),可以与--page选项和-N选项进行比较。可选参数number-separator是附加到行号后面以将其与后面的文本分隔开的字符。默认的分隔符是制表符。严格意义上说,制表符只在单列输出时打印。制表符的宽度随着制表位的位置而变化,例如,随着由-o选项指定的左边距的变化。在多列输出中,优先考虑“输出列等宽”(符合POSIX规范)。制表符的宽度固定为第一列的值,并且不随不同的左边距值而改变。这意味着总是在行号分隔符制表符的位置打印固定数量的空格。制表依赖于输出位置。


'-N line_number'

'--first-line-number=line_number'

从第一页的第一行开始以数字line_number开始计数(在大多数情况下不是输入文件的第一行)。


'-o margin'

'--indent=margin'

将每行缩进margin个空格宽度(默认为零)。总的页面宽度是左边距加上使用-W/-w选项设置的页面宽度。在编号的单列输出中可能会出现有限的溢出(比较-n选项)。


'-r'

'--no-file-warnings'

当无法打开参数文件时,不打印警告消息。(但退出状态仍为非零。)


'-s[char]'

'--separator[=char]'

用单个字符char分隔列。char的默认值在没有-w选项的情况下是制表符,而在有-w选项的情况下是“无字符”。如果没有-s选项,则设置默认分隔符为“空格”。-s[char]关闭了所有三个列选项(-COLUMN|-a -COLUMN|-m)的行截断,除非设置了-w选项。这是符合POSIX规范的表述。


'-S[string]'

'--sep-string[=string]'

使用字符串string来分隔输出列。-S选项不像-s选项那样影响-W/-w选项。它不影响行截断或列对齐。如果没有-S,并且有-J选项,pr将使用默认的输出分隔符TAB。如果没有-S或-J选项,pr将使用“空格”(与-S" "相同)。如果没有指定“string”参数,则假定为“""”。


'-t'

'--omit-header'

不在每页上打印通常的页眉[和页脚],也不在页面底部填充空行或换页符。不生成页面结构,但保留输入文件中设置的换页符。预定义的分页设置不会更改。-t或-T与其他选项一起使用可能会有用;例如:-t -e4,将输入文件中的制表符扩展为4个空格,但不进行其他更改。使用-t会覆盖-h选项。


'-T'

'--omit-pagination'

不打印页眉[和页脚]。此外,消除输入文件中设置的所有换页符。


'-v'

'--show-nonprinting'

以八进制反斜杠表示打印非打印字符。


'-w page_width'

'--width=page_width'

仅对多列文本输出设置页面宽度为page_width个字符(page_width的默认值为72)。指定的page_width会向下取整,以使列具有相等的宽度。-s[CHAR]关闭默认页面宽度以及任何行截断和列对齐。无论设置了哪些列选项,都会合并完整长度的行。单列输出不可能设置页面宽度。这是一个符合POSIX规范的表述。


'-W page_width'

'--page_width=page_width'

将页面宽度设置为page_width个字符,在有或没有列选项的情况下都有效。对于列选项,指定的page_width会向下取整,以使列具有相等的宽度。文本行会被截断,除非使用了-J选项。与三个列选项之一(-column、-a -column或-m)一起使用时,总是使用列对齐。分隔符选项-S或-s不会禁用-W选项。默认值为72个字符。没有-W page_width和任何列选项的情况下,不使用行截断(定义为保持向下兼容性并满足最常见的任务)。这相当于-W 72 -J。页眉行永远不会被截断。