转换文件的内容,用于排版打印
命令语法格式
pr [OPTION]… [FILE]…
命令描述
命令pr将参数FILE的内容写入标准输出,它会对输出数据进行分页,并可以以多列格式输出、可以合并所有文件、并行打印、每列一个。
默认情况下,每页会打印一个高度为5行的标题:两个空白行;包含日期、文件名、页数;还有两个额外的空白行。并且还会打印一个高度为5行的空白行页脚。默认的页面高度(page_length)是66行,因此默认的文本行的高度为56行。标题中的文本行采用“date string page”的形式,并会在字符串周围插入空格,以便该文本行的宽度为整个页面的宽度(page_width)。这里,date是日期(有关详细信息,请参阅-D或–date-format选项);string是居中的标题字符串;page标识页码。LC_MESSAGES语言环境类别影响page的拼写;在默认的C语言环境中,它形如“Page number”,其中number是十进制页码。
输入中的换页符(Form Feed)会导致输出中的页面中断。多个换页符号会导致生成空白页。
列宽度相等,由可选字符串分隔(默认为“空格”)。对于多列输出,除非使用-J选项,否则始终将行截断为page_width(默认为72)。对于单列输出,默认情况下不会发生行截断,在这种情况下,可以使用-W选项截断行。
命令支持的选项及含义
需要提供给长选项的参数也必须提供对对应的短选项。
+FIRST_PAGE[:LAST_PAGE], –pages=FIRST_PAGE[:LAST_PAGE]
打印第FIRST_PAGE页到第LAST_PAGE页。比如,pr +2:4,打印第2页到第4页。如果没有指定:LAST_PAGE,则打印到文件结束。对于输入页面中存在的换页符号,会在输出页中产生对应数量的新页面。进行页面统计时,使用和不使用:FIRST_PAGE是相同的。默认情况下,计数从输入文件的第一页开始(不是第一页打印)。可以通过-N选项更改行编号。
-COLUMN, –columns=COLUMN
对于每个单个文件FILE,将每一页分为COLUMN列,然后垂直打印列。COLUMN的默认值为1。emmmmm….这个选项什么意思呢?报纸和杂志的那种排版你知道吧,一列一列的向下读的那种排版,那种排版不像我们平时看的书籍,使用这选项就可以生成那种排版。
因为默认的页面总宽度是固定的,所以列宽会随着COLUMN的增加而自动减小;除非使用-W/-w选项来增加页面宽度。因为显示COLUMN列,如果页面宽度不足,该选项很可能会导致一些行被截断,使得无法显示完整。每个页面中列的行数是均衡的。选项-e和-i可以作用于多个文本列输出,与该选项可以相互配合。与-J选项一起使用会将列对齐和行截断一起关闭。全长行由自由字段格式连接,-S选项可以设置字段分隔符。
–column不能与-m选项一起使用。
-a, –across
交叉打印列,而不是默认的向下打印。必须与-COLUMN一起使用,并且COLUMN必须大于1。
假设COLUMN为2,则现在第一列里打印,然后在第二列里打印,然后在到第一列里打印,然后再在第二列中打印……
-c, –show-control-chars
打印控制字符和非打印字符。控制字符使用脱字符表示(比如‘^G’),非打印字符使用八进制反斜线表示。
-d, –double-space
增大行间距为两倍。
-D, –date-format=FORMAT
使用FORMAT作为输出中头部的日期的格式,FORMAT的格式与命令date(1)中的约定相同。已百分号(%)开始的字符会被解释为指令,剩下的字符直接打印。可以使用该选项指定任意的字符串作为头部的日期,比如–date-format=”Monday morning”。
默认日期格式为’%Y-%m-%d %H:%M’(例如,’2001-12-04 23:59’);但是如果设置了POSIXLY_CORRECT环境变量,且LC_TIME语言环境类别指定了POSIX语言环境,则默认为’%b %e %H:%M %Y’(例如,’Dec 4 23:59 2001’)。
时间戳根据TZ环境变量指定的时区规则列出,如果未设置TZ,则按系统默认规则列出。请参阅“GNU C库参考手册”中的「使用TZ指定时区」。
-e[CHAR[WIDTH]], –expand-tabs[=CHAR[WIDTH]]
将输入中的制表符(ASCII TAB)展开为空格(’ ‘)。可选参数CHAR是输入制表符(默认为TAB字符)。第二个可选参数WIDTH是输入中制表符(ASCII TAB)的宽度(默认值为8)。
-i[CHAR[WIDTH]], –output-tabs[=CHAR[WIDTH]]
将输出中的空格(‘ ’)使用制表符(ASCII TAB)替换。可选参数CHAR是输出制表符(默认为TAB字符)。第二个可选参数WIDTH是输出制表符的宽度(默认值为8)。
-F, -f, –form-feed
使用换页符(ASCII FF)而不是换行符(ASCII LF)来分隔输出页面。该选项不会改变默认66行的页面高度。
-h, –header=HEADER
使用居中的HEADER作为标题中的名称,代替默认的文件名。使用-h “”来打印一个空行的页面名。在Shell中HEADER在适当的时候需要进行引用。不要使用-h””的形式。
-J, –join-lines
合并全长行。与列选项-column、-a -column、-m一起使用。该选项会关闭-W/-w行截断;不会使用列对齐;可以和–sep-string[=string]一起使用。
引入-J选项(与-W和–sep-string一起)以解开旧的(符合POSIX的)选项-w和-s以及三个列选项。
-l, –length=PAGE_LENGTH
将页面高度设置为PAGE_LENGTH行(默认为66),包括页眉和页脚占用的行。如果PAGE_LENGTH小于或等于10,则会忽略页眉和页脚,就像指定了-t选项一样。
-m, –merge
并行合并,并打印所有文件,每列一个。如果一行太长而超过列宽,则会被截断,除非使用了-J选项,使用了-J选项后就不会被截断。
可以使用–sep-string[=string]。某些文件中的空白页面(设置了换页符)会生成空列,但是仍然用string进行标记。输出的结果是整个合并文件中的连续行编号和列标记。完全空白的合并页面不显示分隔符或行号。默认标题变为’date page’,中间插入空格;这可以与-h或–header选项一起使用来填充中间的空白部分。
-n[SEP[DIGITS]], –number-lines[=SEP[DIGITS]]
提供DIGITS位的行编号(默认值为5)。
使用多列输出(-COLUMN)时,该DIGITS将占据每个文本列的第一位数字列位置,或使用-m时仅占用每行的开始。对于单列输出,数字在每行之前,就像使用-m选项一样。
行号的默认计数从输入文件的第一行开始(不是打印的第一行,比较–page选项和-N选项)。可选参数SEP是附加到行号后面的字符,用于将行号与接下来的文本分开。默认分隔符是TAB字符。严格意义上,TAB总是只打印单列输出。TAB宽度随TAB位置而变化,例如,使用-o选项指定左边距。使用多列输出优先级赋予“输出列的相等宽度”(POSIX规范)。TAB的宽度被固定为第一列的值,并且不因左边距的值不同而变化。这意味着固定数量的空格总是打印在数字分隔符SEP的位置。制表依赖于输出位置。
-N, –first-line-number=NUMBER
从打印结果中的第一页的第一行开始,以NUMBER开始进行行号计数(大多数情况下不是输入文件的第一行,参见+FIRST_PAGE选项)。
-o, –indent=MARGIN
每行缩进MARGIN的空格,MARGIN的默认值为0,不会影响-w和-W选项,MARGIN会被加到PAGE_WIDTH上作为页面的总宽度。
-r, –no-file-warnings
忽略因文件无法打开而产生的警告。
-s[CHAR], –separator[=CHAR]
用单个字符CHAR分隔输出的列。CHAR的默认值是没有-w的TAB字符和-w的“”。如果没有-s选项,则被设置为默认分隔符空格(“”)。-s[CHAR]关闭三个列选项(-COLUMN|-a -COLUMN|-m)的行截断功能,除非设置了-w。这是符合POSIX的形式。
-S[STRING], –sep-string[=STRING]
使用字符串STRING分隔输出的列。-S选项不影响-W/-w选项,与-s选项不同,上面的-s选项会影响-w/-W。选项-S不会影响行截断或列对齐。
没有-S,但使用了-J,则pr使用默认输出分隔符TAB。不使用-S或者没有使用-J时,pr使用空格做为分隔符(“ ”,与-S” “相同)。如果指定了-S选项,但未指定STRING参数,则假定为空格(“ ”)。
-t, –omit-header
不要在每个页面上打印常用页眉和页脚,也不要在页面底部进行填充(空白行或换页符)。不会生成页面结构,但保留了在输入文件中设置的换页符号。预定义的分页不会更改。
-t或-T可能与其他选项一起使用;例如:-t -e4,将输入文件中的TAB字符扩展为4个空格,但不作任何其他更改。使用-t选项会覆盖-h选项。
如果PAGE_LENGTH <= 10则会默认启用该选项。
-T, –omit-pagination
不要打印页眉和页脚,此外消除输入文件中设置的所有换页符。
-v, –show-nonprinting
使用八进制反斜线的形式来表示非打印字符。
-w, –width=PAGE_WIDTH
将页面宽度设置为PAGE_WIDTH个字符,只用于多文本列输出,指定的PAGE_WIDTH将向下舍入,以便列具有相同的宽度。-s[CHAR]关闭默认的页宽度、行截断、列对齐。无论列选项如何设置,全长行都会被合并。单列输出无法设置页面宽度。符合POSIX标准的形式。
-W, –page-width=PAGE_WIDTH
将页面宽度设置为PAGE_WIDTH个字符(默认为72个),可以与列选项一起使用,也可以不与列选项一起使用。使用列选项时,指定的PAGE_WIDTH将向下舍入,以使得列具有相同的宽度。
文本行会被截断,除非使用了-J。与三个列选项(-column,-a -column或-m)中的任意一个一起使用,都会使列对齐。分隔符选项-S或-s不会禁用-W选项。缺省值是72个字符。没有-W page_width,且没有任何列选项使用时,不会进行截断(该定义是为保持向下兼容性,并满足最频繁的任务),这相当于-W 72 -J。页眉不会被截断。
–help
显示帮助信息并退出。
–version
显示版本信息并退出。
相关手册
完整在线手册:http://www.gnu.org/software/coreutils/pr
参考info手册:info ‘(coreutils) pr invocation’
参考文献
- man 1 pr, version 8.26
更新日志
- 05/29/2018 创建文章