reference
1 min read
fmt
fmt reflows paragraphs: it rejoins the lines of a paragraph and re-breaks them so each comes out close to a target width. Words move freely between lines to make the result fit.
fmt [options] [file...]
$ fmt -w 72 draft.txt
fmt works on paragraphs — runs of non-blank lines separated by blank lines — and treats word boundaries as places it may break. The result reads naturally. This is what distinguishes it from fold, which simply cuts every line at a fixed column without regard to words.
With no file, fmt reads standard input.
Setting the width
| Option | Effect |
|---|---|
-w, --width=WIDTH |
Fill lines up to at most WIDTH columns. The default is 75. |
-g, --goal=WIDTH |
Aim for WIDTH columns — the width fmt targets, while -w is the hard maximum. Defaults to about 93% of the maximum. |
Controlling the reflow
| Option | Effect |
|---|---|
-s, --split-only |
Only split lines that are too long; never join short lines together. |
-u, --uniform-spacing |
Put exactly one space between words and two between sentences. |
-c, --crown-margin |
Preserve the indentation of a paragraph's first two lines; indent the rest to match the second. |
-t, --tagged-paragraph |
Like -c, but the first line must be indented differently from the second, or the two are treated as separate paragraphs. |
-q, --quick |
Break lines faster, accepting a more ragged right edge. |
Selecting which lines to format
| Option | Effect |
|---|---|
-p, --prefix=PREFIX |
Reformat only lines that begin with PREFIX; reattach PREFIX afterwards. Useful for reflowing comment blocks in source code. |
-m, --preserve-headers |
Detect and preserve mail-style header lines rather than reflowing them. |
--tab-width=N |
Treat a tab as N columns when measuring line length. Tabs are kept in the output; this affects measurement only. |
Exit status
| Code | Meaning |
|---|---|
0 |
Success. |
1 |
A file could not be read, or an option value was invalid. |
See also
Peios Learn
Built with Trail