print files


Print multiple files with a default header and footer

$ pr [file1] [file2] [file3]

Print with a custom centered header
$ pr -h "[header]" [file1] [file2] [file3]

Print with numbered lines and a custom date format
$ pr -n -D "[format]" [file1] [file2] [file3]

Print all files together, one in each column, without a header or footer
$ pr -m -T [file1] [file2] [file3]

Print, beginning at page 2 up to page 5, with a given page length (including header and footer)
$ pr +[2]:[5] -l [page_length] [file1] [file2] [file3]

Print with an offset for each line and a truncating custom page width
$ pr -o [offset] -W [width] [file1] [file2] [file3]


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


Paginate or columnate FILE(s) for printing.

With no FILE, or when FILE is -, read standard input.

Mandatory arguments to long options are mandatory for short options too.


begin [stop] printing with page FIRST_[LAST_]PAGE

-COLUMN, --columns=COLUMN

output COLUMN columns and print columns down, unless -a is used. Balance number of lines in the columns on each page

-a, --across

print columns across rather than down, used together with -COLUMN

-c, --show-control-chars

use hat notation (^G) and octal backslash notation

-d, --double-space

double space the output

-D, --date-format=FORMAT

use FORMAT for the header date

-e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]

expand input CHARs (TABs) to tab WIDTH (8)

-F, -f, --form-feed

use form feeds instead of newlines to separate pages (by a 3-line page header with -F or a 5-line header and trailer without -F)

-h, --header=HEADER

use a centered HEADER instead of filename in page header, -h "" prints a blank line, don't use -h""

-i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]

replace spaces with CHARs (TABs) to tab WIDTH (8)

-J, --join-lines

merge full lines, turns off -W line truncation, no column alignment, --sep-string[=STRING] sets separators

-l, --length=PAGE_LENGTH

set the page length to PAGE_LENGTH (66) lines (default number of lines of text 56, and with -F 63). implies -t if PAGE_LENGTH <= 10

-m, --merge

print all files in parallel, one in each column, truncate lines, but join lines of full length with -J

-n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]

number lines, use DIGITS (5) digits, then SEP (TAB), default counting starts with 1st line of input file

-N, --first-line-number=NUMBER

start counting with NUMBER at 1st line of first page printed (see +FIRST_PAGE)

-o, --indent=MARGIN

offset each line with MARGIN (zero) spaces, do not affect -w or -W, MARGIN will be added to PAGE_WIDTH

-r, --no-file-warnings

omit warning when a file cannot be opened

-s[CHAR], --separator[=CHAR]

separate columns by a single character, default for CHAR is the <TAB> character without -w and 'no char' with -w. -s[CHAR] turns off line truncation of all 3 column options (-COLUMN|-a -COLUMN|-m) except -w is set

-S[STRING], --sep-string[=STRING]

separate columns by STRING, without -S: Default separator <TAB> with -J and <space> otherwise (same as -S" "), no effect on column options

-t, --omit-header

omit page headers and trailers; implied if PAGE_LENGTH <= 10

-T, --omit-pagination

omit page headers and trailers, eliminate any pagination by form feeds set in input files

-v, --show-nonprinting

use octal backslash notation

-w, --width=PAGE_WIDTH

set page width to PAGE_WIDTH (72) characters for multiple text-column output only, -s[char] turns off (72)

-W, --page-width=PAGE_WIDTH

set page width to PAGE_WIDTH (72) characters always, truncate lines, except -J option is set, no interference with -S or -s


display this help and exit


output version information and exit


GNU coreutils online help: <>
Report any translation bugs to <>


Copyright © 2023 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <>.
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.


Full documentation <> or available locally via: info '(coreutils) pr invocation'


Written by Pete TerMaat and Roland Huebner.

Copied to clipboard