fmt (Unix)

The fmt command in Unix and Unix-like operating systems is used to format natural language text for humans to read.

fmt
Operating systemUnix, Unix-like, Inferno
TypeCommand

Overview

The command has been traditionally used to reformat email messages after composition and prior to delivery. Its syntax is similar among various Unixes, but not identical. fmt attempts to break, fill and join input lines to produce globally optimal, balanced output with the lengths of each line approaching the target width as closely as possible, rather than wrapping the input lines exactly as fold (from GNU Core Utilities) does.

In most implementations of fmt, the word wrap optimization procedure usually requires two criteria: the target output line width, and the maximum acceptable line width (which should be larger than the previous one to give room for optimization). It might be not always possible to give these two options simultaneously. For example, early versions of GNU fmt can only accept the maximum width option, which is given by -w switch, or directly -digits as the first command line option for compatibility (later versions use -g to specify the goal width and -w for the maximum width). See the Solaris man page for fmt[1] and FreeBSD manual entry for fmt[2] for detailed examples, and compare with the latest documentation of GNU fmt utility[3] included by most Linux distributions. See also the Plan 9 fmt man page.[4]

Unlike par, fmt has no Unicode support, and does not support text justification.

Example

Given text like this as input:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur dignissim
venenatis pede. Quisque dui dui, ultricies ut, facilisis non, pulvinar non. Duis quis arcu a purus volutpat iaculis. Morbi id dui in diam ornare
dictum. Praesent consectetuer vehicula ipsum. Praesent tortor massa, congue et,
ornare in, posuere eget, pede.

Vivamus rhoncus. Quisque lacus. In hac habitasse platea dictumst. Nullam mauris
tellus, sollicitudin non, semper eget, sodales non, pede. Phasellus varius
ullamcorper libero. Fusce ipsum lorem, iaculis nec, vulputate vitae, suscipit
vel, tortor. Cras varius.

Nullam fringilla pellentesque orci. Nulla eu ante pulvinar velit rhoncus
lacinia. Morbi fringilla lacus quis arcu. Vestibulum sem quam, dapibus in,
fringilla ut, venenatis ut, neque.

After passing this through fmt -w 50, the width of each line is at most 50 characters and the text flows within this constraint:

Lorem ipsum dolor sit amet, consectetuer
adipiscing elit. Curabitur dignissim venenatis
pede. Quisque dui dui, ultricies ut, facilisis
non, pulvinar non, purus. Duis quis arcu a
purus volutpat iaculis. Morbi id dui in diam
ornare dictum. Praesent consectetuer vehicula
ipsum. Praesent tortor massa, congue et, ornare
in, posuere eget, pede.

Vivamus rhoncus. Quisque lacus. In hac
habitasse platea dictumst. Nullam mauris tellus,
sollicitudin non, semper eget, sodales non,
pede. Phasellus varius ullamcorper libero. Fusce
ipsum lorem, iaculis nec, vulputate vitae,
suscipit vel, tortor. Cras varius.

Nullam fringilla pellentesque orci. Nulla eu ante
pulvinar velit rhoncus lacinia. Morbi fringilla
lacus quis arcu. Vestibulum sem quam, dapibus in,
fringilla ut, venenatis ut, neque.
gollark: All you need is a laser, or possibly scissors.
gollark: <:urn:627264769195245578>! <:amulet:629795914680369166>!
gollark: Anyway, my reimplementation doesn't share functions, only JSONable types.
gollark: Oh, that too? I thought it was just the metatable being shared.
gollark: The one where the string metatable was shared across all computers on a server.

See also

References

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.