FMT(1)

名称
fmt - 簡単なテキストフォーマッタ

書式
fmt [-cmnps] [-d chars] [-l num] [-t num] [goal [maximum] | -width | -w width] [file ...]

解説
fmt は簡単なテキストフォーマットプログラムです。 引数として name が指定されていればその名前のファイルを、 指定されていなければ標準入力を読み込み、 入力した行を次々に連結していき、 maximum を超えない範囲で、 goal で指定した長さに近い文字数に整形します。 デフォルトでは、 goal の長さは 65、 maximum の長さは goal に 10 を加えたものです。 または、前にハイフンを付けるか -w を使用することにより、単一の width パラメータを指定可能です。 例えば、 “fmt -w 72”, “fmt -72”, “fmt 72 72” は同じ出力となります。 入力行の先頭に空白 がある場合は、整形した出力の先頭にも空白が置かれ段づけされます。 また、空白行や、文字と文字の間の空白の数も、出力に受け継がれます。 行が結合されたり分割されるのは、空白においてのみです。 つまり、複数の単語が結合されたりハイフネーションされることはありません。

オプションは次の通りです:

-c  テキストを中央寄せさせます。 この場合、他のほとんどのオプションは無視されます。 行の分割や結合は行われません。

-m  入力に含まれるメールヘッダ行を目立つように整形しようとします。

-n  ‘’. (ドット) 文字で開始する行を整形します。 通常では、 fmt は、 nroff(1) との互換性のために、このような行を詰めます。

-p  インデントされた段落を許します。 -p フラグ無しでは、行頭の空白数が変わると、新規段落が開始します。

-s  行中の空白を潰し、複数の空白文字が単一の空白となるようにします (文末では、二つの空白となります)。

-d chars
    chars を文末文字として認識します (他の文字はそうでないと認識します)。 デフォルトでは、文末文字は終止符 (‘’). 疑問符 (‘’)? 感嘆符 (‘’)! です。 文字によっては、シェルから守るために、 エスケープが必要であることを覚えておいてください。

-l number
    各出力行の先頭の複数の空白をタブで置き換えます。 各 number 個の空白が、単一のタブで置き換えられます。 デフォルトは 8 です。 number が 0 である場合、空白は維持されます。

-t number
    入力ファイルのタブが、 number 個の空白をタブストップに仮定していると仮定します。 デフォルトは 8 です。

fmt は、メールメッセージを送信する前に整形するために役立ちますが、 他の簡単なタスクのためにも使うことができます。たとえば、 ex(1) のビジュアルモード(すなわち vi(1)) のなかで、次のコマンドを入力すると、 パラグラフを整形してくれます。

    !}fmt

関連項目
mail(1), nroff(1)

歴史
fmt コマンドは 3BSD から登場しました。

このバージョンは完全に書き直したもので、 FreeBSD 4.4 に登場しました。

作者
Kurt Shoens Liz Allen (goal の長さの概念を導入) Gareth McCaughan

バグ
このプログラムは、簡単で高速であるようにデザインされました。もっと複雑 な整形には、標準的なテキストプロセッサを使うのが適しています。

インデントされた段落の最初の行がとても長い場合 (goal の長さの 2 倍よりも長い場合)、 出力のインデントが誤りとなる可能性があります。

どの行がメールヘッダでありどれがそうでないかの判断を、 fmt が絶対に間違えないということはありません。