Next: , Previous: fmt invocation, Up: Formatting file contents   [Contents][Index]


4.2 pr: ページ付けや段組みをしてファイルを表示する

pr は、各 file (‘-’ は標準入力を表す) を標準出力に書き出す。file が指定されていない場合は、標準入力を対象にする。 その際、ページ付けを行い、指定があれば段組みをして出力する。また、すべての file を一つに統合し、1 段 1 ファイルの形式で平行して表示することもできる。 (訳注: pr はページ構成をするコマンドであって、 長い行の折り返しなどの整形をするわけではない。そうしたことは、fmtfold の仕事である。なお、pr の日本語対応は十分ではない。 とくに段組みがうまくいかない。)


書式:

pr [option]… [file]…

デフォルトでは、5 行のヘッダが各ページに付く。2 行の空行、 日付・ファイル名・ページ番号からなる 1 行、そしてもう 2 行の空行という形式である。 5 行の空行からなるフッタも出力される。デフォルトのページ長 (page_length) は 66 行なので、本文に使用されるデフォルトの行数は、56 行になる。 ヘッダのテキスト行は、‘date string page’ の形を取り、 string の両側に空白を入れて、行の幅がページ幅 (page_width) いっぱいになるようにしている。date は日付であり (詳細については、 --date-format (-D) オプションを参照)、 string は中央揃えのヘッダ文字列 (訳注: デフォルトではファイル名)、 page はページ番号である。page という単語の綴りは、 LC_MESSAGES ロケール・カテゴリによって変わってくる。デフォルトの C ロケールでは、‘Page number’ であり、number は 10 進数のページ番号だ。

入力にフォームフィード (Form feed) があると、出力では改ページが行われる。 フォームフィードが続くと、白紙のページが生ずる。

段組みをした場合、どの段の幅も同じになり、段と段の間には任意の文字列 (デフォルトはスペース) が置かれる。多段組みの出力では、-J オプションを使用しないかぎり、各行は常に page_width (デフォルトは 72) 文字までに切り詰められる (訳注: これは、各段や段間の空白などを合計した 1 行の長さが、 最長でも page_width 文字までになるということであって、 各段がそれぞれ page_width 文字になるということではない)。 1 段のみの出力では、デフォルトでは行の切り詰めは行われない。 その場合でも、行の切り詰めを行うには、-W を使用する。

このプログラムでは以下のオプションが使用できる。参照: Common options.

+first_page[:last_page]
--pages=first_page[:last_page]

表示を first_page ページから始めて、 last_page ページで終了する。 ‘:last_page’ の指定を省略するのは、ファイルの最後までということである。 スキップするページ数を計算する際、入力ファイル中にフォームフィードがあると、 そのたびに 1 ページ進むことになる。ページ番号は、‘+first_page’ があってもなくても、同じになる。デフォルトでは、 入力ファイルの最初のページからページ数を数えるからだ (表示される最初のページからではない)。 行番号については -N オプションで変更することができる。

-column
--columns=column

個々の file に対して column 段に段組みした出力を生成する (デフォルトは 1 段)。-a オプションを使用しない場合、ページ内で本文は、 段内を上から下へと進む。段が増えると、段の幅は自動的に狭くなる。 ただし、-W/-w を同時に使用して、page_width を増加させている場合は、そのかぎりではない。このオプションを使うと、 切り詰められる行がたぶん生じるだろう。ページごとの各段の行数は、 できるだけ揃えられる。多段組みの本文出力では、オプション -e-i が有効になる。-J オプションと一緒に使った場合は、 段の整列と行の切り詰めは行われない。各行は、元の長さのまま、不定長フィールドとして (free field format) 結合されるのである。その際も、-S オプションによってフィールド・セパレータを指定することは可能だ。なお -column は、-m オプションと一緒に使用できない。

-a
--across

個々の file を段組みで表示するとき、本文の各行が、段内を上から下へではなく、 左の段から右の段へと進むようにする。-column オプションに指定する段の数は、2 以上でなければならない。 行が段の幅に納まらないほど長い場合、その行は切り詰められる。

-c
--show-control-chars

制御文字をハット表記 (たとえば、‘^G’) を使って表示する。 他の非表示文字は、バックスラッシュ付きの 8 進数表記になる。pr のデフォルトでは、非表示文字の表示文字化は行われない。

-d
--double-space

ダブルスペースで出力する (訳注: すなわち、行間を 1 行分あける)。

-D format
--date-format=format

ヘッダの日付を format を用いて整形する。format には、コマンド ‘date +format’ で使うのと同じ指定法が使用できる。See date invocation. ‘%’ で始まる日時の指定を除いて、format 中の文字はそのまま表示される。 従って、このオプションを使用すれば、ヘッダの日付の位置に任意の文字列を指定することもできるわけだ。 たとえば、--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 が設定されていない場合は、システムのデフォルトのルールに従って表示される。 See Specifying the Time Zone with TZ in The GNU C Library Reference Manual.

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

入力の際にタブをスペースに展開する。省略できる引数 in-tabchar は、 入力で使われるタブ文字である (デフォルトは TAB 文字)。 これも省略できる二番目の引数 in-tabwidth は、 入力で使われるタブ文字の幅である。(デフォルトは 8 桁)。

-f
-F
--form-feed

複数個の改行文字ではなく、1 個のフォームフィードを使用して、 出力する各ページを分離する。このオプションによって、 66 行というデフォルトのページの長さが変わることはない。

-h header
--header=header

ヘッダのファイル名の部分を、中央揃えの header という文字列で置き換える。 シェル上では、header はクォートするべきである。また、-h との間に空白を入れた方がよい。

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

出力の際にスペースをタブで置き換える。省略できる引数 out-tabchar は、出力で使われるタブ文字である (デフォルトは TAB 文字)。 これも省略できる二番目の引数 out-tabwidth は、出力で使われるタブ文字の幅である (デフォルトは 8 桁)。

-J
--join-lines

長い行は長いまま結合する。段組みオプション -column, -a -column, -m と併せて使用する。-W/-w による行の切り詰めが無効になる。 段の整列も行わなくなる。--sep-string[=string] と併せて使ってもよい。 -J というオプションが (-W--sep-string とともに) 新たに設けられたのは、-w-s という、前からある (POSIX に準拠した) オプションを 3 種の段組みオプションと組み合わせて使ったときの混乱を解消するためである。

-l page_length
--length=page_length

1 ページの行数を、ヘッダ行 (及び フッタ行) を含めて、page_length 行にする (デフォルトは 66 行)。page_length が 10 行以下だったら、 -t オプションが指定されたかのように、 ヘッダとフッタは省略する。

-m
--merge

すべての file を統合し、各段に 1 ファイルを割り当てて、平行表示する。 長すぎて段に納まらない行があれば、-J オプションが使用されていないかぎり、 切り詰めが行われる。--sep-string[=string] を指定してもよい。いづれかの file に (フォームフィードの指定により) 空白のページが存在すると、空白の段が生ずるが、それでも段を分離する記号の string は表示される。すなわち、統合されたファイルの最初から最後まで、 行番号と (訳注: これはもちろん、-n オプションが指定されている場合) 段の分離記号は、連続して表示されるわけだ。 ただし、統合されたページのどの段も空白の場合は、分離記号も行番号も表示されない。 デフォルトのヘッダは、‘date page’ という形式になり、 中央には空白が挿入される。-h--header オプションを -m と一緒に使えば、この中央の空白部分に文字列を入れることができる。

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

digits の幅の行番号を表示する (digits のデフォルトは 5 桁)。 通常の多段組みの出力では、行番号は、各段ごとに本文の最初の digits 桁分の位置を占めるが、-m の出力の場合は、各行の先頭だけに表示される。 1 段組みでは、-m の場合と同様、各行の先頭に付く。 デフォルトでは、行数は、入力ファイルの最初の行から数え始める (表示される最初の行からではない。--page-N オプションを参照)。 省略可能な引数 number-separator は、行番号の後ろに付けて、 後に続く本文と区別するための文字であり、デフォルトのセパレータはタブ文字である。 厳密に言うと、常にタブが表示されるのは、1 段組みの出力のときだけである。 タブの幅は、本来タブの現れる位置によって変化し、たとえば、-o オプションで指定される左の余白 (margin) によって変わってくるものである。 しかし、多段組みの出力では、「出力される段の幅が同じになる」ことが優先されるため (POSIX の仕様)、タブの幅は、最初の段における値に固定され、左の余白の値が変わっても、 変化することはない。従って、number-separator であるタブの位置には、 常に一定数のスペースが表示されることになる。スペースをタブに置き換えるかどうかは、 出力される位置次第である。

-N line_number
--first-line-number=line_number

表示される最初のページの最初の行を line_number として行を数えて行く (入力ファイルの最初の行以外から表示を始めるときによく使う)。

-o margin
--indent=margin

スペース margin 個分の余白で各行をインデントする (デフォルトは、 スペース 0 個)。ページの横幅は、-W/-w で指定した page_width と余白を合計したサイズになる。行番号付きの 1 段組み出力では、 行から少しはみ出す文字が生ずるかもしれない (-n オプション参照)。

-r
--no-file-warnings

引数 file がオープンできないときも、警告メッセージを表示しない (終了ステータスは、それでもやはり 0 以外になる)。

-s[char]
--separator[=char]

段と段の区切りに 1 個の文字 char を使う。-s オプションを指定したときのデフォルトの char は、-w オプションを同時に指定しなければタブ、指定すれば「なし」である。 なお、-s オプションを指定しない場合のデフォルトのセパレータはスペースだ。 -s[char] オプションを使用すると、-w も同時に指定しないかぎり、 3 種の段組みオプション (-COLUMN|-a -COLUMN|-m) のすべてにおいて、行の切り詰めが行われない。これは、POSIX に準拠した仕様である。

-S[string]
--sep-string[=string]

出力される段の区切りに、文字列 string を使用する。-s オプションが -W/-w オプションに影響を及ぼすのとは異なり、 -S オプションは -W/-w オプションに影響を及ぼさない。 また、行の切り詰めや段の整列にも影響しない。-S オプションを指定せずに、 -J オプションを指定すると、pr はデフォルトの出力セパレータであるタブを使用する (訳注: -J 使用時のデフォルトということだと思う)。-S-J も指定しない場合、pr が区切りに使用するのはスペースである (-S" " と同じこと)。-S だけで、引数の ‘string’ を指定しないと、 空文字列 (‘""’) を指定したことになる。

-t
--omit-header

常とは異なり、各ページにヘッダ (とフッタ) を表示しない。 また、ページの最下部を (空行やフォームフィードで) 埋めることもしない。 ページ構成は行わないが、入力ファイルにあるフォームフィードは、 そのままにしておく。つまり、あらかじめ決めておいたページ分割が、 変更されないということだ。-t-T オプションは、 他のオプションと組み合わせて使うと、便利なことがある。たとえば、-t -e4 は、入力ファイルのタブ文字を 4 個のスペースに展開するが、 それ以外何の変更も行わない。-t オプションを使用すると、 -h オプションが無効になる。

-T
--omit-pagination

ヘッダ (とフッタ) を表示しない。さらに、入力ファイルにあるフォームフィードをすべて取り除く。

-v
--show-nonprinting

非表示文字をバックスラッシュ付きの 8 進数表記で表示する。

-w page_width
--width=page_width

本文を多段組み出力にしたときのみ、ページの幅を page_width 文字にする (page_width のデフォルトは 72 字)。各段の幅が等しくなるようにするため、 ページ幅が指定した page_width より狭くなることがある。 多段組みで -w オプションを指定せず、-s[CHAR] オプションだけ指定すると、デフォルトのページ幅が無効になり、 行の切り詰めや段の整列も行われなくなる。 すなわち、各段の長い行が長いまま結合されてしまうのだ。なお、1 段組みの出力では、 page_width の指定はできない。以上は、POSIX に準拠した仕様である。

-W page_width
--page_width=page_width

ページの幅を page_width 文字にする。この指定は、 段組みオプションがあってもなくても、有効である。段組みオプションとともに使った場合、 各段の幅が等しくなるようにするため、ページ幅が指定した page_width より狭くなることがある。-J オプションを使用しないかぎり、本文の行が切り詰められる。 3 種の段組みオプション (-column, -a -column, -m) と組み合わせて使った場合、段の整列が常に行われる。 セパレータを指定するオプションの -S-s が、 -W オプションを無効にすることはない。デフォルトは 72 文字である。 -W page_width オプションもなく、 段組みオプションも全く指定されていない場合に、行の切り詰めが行われることは絶対にない (下位互換を維持しつつ、よく行われる作業のほとんどに対応するために、そうなっている)。 この動作は、-W 72 -J と同じである。 なお、ヘッダ行が切り詰められることは絶対にない。

終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。


Next: , Previous: fmt invocation, Up: Formatting file contents   [Contents][Index]