xref: /freebsd/usr.bin/fmt/fmt.1 (revision 4f8f43b06ed07e96a250855488cc531799d5b78f)
1.\" Copyright (c) 1980, 1990, 1993
2.\"	The Regents of the University of California.  All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\" 3. Neither the name of the University nor the names of its contributors
13.\"    may be used to endorse or promote products derived from this software
14.\"    without specific prior written permission.
15.\"
16.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26.\" SUCH DAMAGE.
27.\"
28.\"     @(#)fmt.1	8.1 (Berkeley) 6/6/93
29.\"
30.\" Modified by Gareth McCaughan to describe the new version of `fmt'
31.\" rather than the old one.
32.Dd October 29, 2020
33.Dt FMT 1
34.Os
35.Sh NAME
36.Nm fmt
37.Nd simple text formatter
38.Sh SYNOPSIS
39.Nm
40.Op Fl cmnps
41.Op Fl d Ar chars
42.Op Fl l Ar num
43.Op Fl t Ar num
44.Op Ar goal Oo Ar maximum Oc | Fl Ns Ar width | Fl w Ar width
45.Op Ar
46.Sh DESCRIPTION
47The
48.Nm
49utility is a simple text formatter which reads the concatenation of input
50files (or standard input if none are given) and produces on standard
51output a version of its input with lines as close to the
52.Ar goal
53length
54as possible without exceeding the
55.Ar maximum .
56The
57.Ar goal
58length defaults
59to 65 and the
60.Ar maximum
61to 10 more than the
62.Ar goal
63length.
64Alternatively, a single
65.Ar width
66parameter can be specified either by prepending a hyphen to it or by using
67.Fl w .
68For example,
69.Dq Li fmt -w 72 ,
70.Dq Li fmt -72 ,
71and
72.Dq Li fmt 72 72
73all produce identical output.
74The spacing at the beginning of the input lines is preserved in the output,
75as are blank lines and interword spacing.
76Lines are joined or split only at white space; that is, words are never
77joined or hyphenated.
78.Pp
79The options are as follows:
80.Bl -tag -width indent
81.It Fl c
82Center the text, line by line.
83In this case, most of the other
84options are ignored; no splitting or joining of lines is done.
85.It Fl m
86Try to format mail header lines contained in the input sensibly.
87.It Fl n
88Format lines beginning with a
89.Ql \&.
90(dot) character.
91.It Fl p
92Allow indented paragraphs.
93Without the
94.Fl p
95flag, any change in the amount of whitespace at the start of a line
96results in a new paragraph being begun.
97.It Fl s
98Collapse whitespace inside lines, so that multiple whitespace
99characters are turned into a single space.
100(Or, at the end of a
101sentence, a double space.)
102.It Fl d Ar chars
103Treat the
104.Ar chars
105(and no others) as sentence-ending characters.
106By default the
107sentence-ending characters are full stop
108.Pq Ql \&. ,
109question mark
110.Pq Ql \&?
111and exclamation mark
112.Pq Ql \&! .
113Remember that some characters may need to be
114escaped to protect them from your shell.
115.It Fl l Ar number
116Replace multiple spaces with tabs at the start of each output
117line, if possible.
118Each
119.Ar number
120spaces will be replaced with one tab.
121The default is 8.
122If
123.Ar number
124is 0, spaces are preserved.
125.It Fl t Ar number
126Assume that the input files' tabs assume
127.Ar number
128spaces per tab stop.
129The default is 8.
130.El
131.Pp
132The
133.Nm
134utility
135is meant to format mail messages prior to sending, but may also be useful
136for other simple tasks.
137For instance,
138within visual mode of the
139.Xr ex 1
140editor (e.g.,
141.Xr vi 1 )
142the command
143.Pp
144.Dl \&!}fmt
145.Pp
146will reformat a paragraph,
147evening the lines.
148.Sh ENVIRONMENT
149The
150.Ev LANG , LC_ALL
151and
152.Ev LC_CTYPE
153environment variables affect the execution of
154.Nm
155as described in
156.Xr environ 7 .
157.Sh EXAMPLES
158Center the text in standard input:
159.Bd -literal -offset indent
160$ echo -e 'The merit of all things\enlies\enin their difficulty' | fmt -c
161                     The merit of all things
162                               lies
163                       in their difficulty
164.Ed
165.Pp
166Format the text in standard input collapsing spaces:
167.Bd -literal -offset indent
168$ echo -e 'Multiple   spaces    will be collapsed' | fmt -s
169Multiple spaces will be collapsed
170.Ed
171.Sh SEE ALSO
172.Xr fold 1 ,
173.Xr mail 1
174.Sh HISTORY
175The
176.Nm
177command appeared in
178.Bx 3 .
179.Pp
180The version described herein is a complete rewrite and appeared in
181.Fx 4.4 .
182.Sh AUTHORS
183.An Kurt Shoens
184.An Liz Allen
185(added
186.Ar goal
187length concept)
188.An Gareth McCaughan
189.Sh BUGS
190The program was designed to be simple and fast \- for more complex
191operations, the standard text processors are likely to be more appropriate.
192.Pp
193When the first line of an indented paragraph is very long (more than
194about twice the goal length), the indentation in the output can be
195wrong.
196.Pp
197The
198.Nm
199utility is not infallible in guessing what lines are mail headers and what
200lines are not.
201