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

環境変数
environ(7) に記述されているように、 LANG, LC_ALL, LC_CTYPE 環境変数は fmt の実行に影響を及ぼします。

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

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

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

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

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

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

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