Home
Last updated
The fmt
is a simple text formatter that can set the column width for a file, files or standard input and write it to standard output. It supports setting the with of columns for the formatting, preserving first line indentation, and setting uniform spacing. Originally designed as a tool to format mail messages it can be useful for reading files in the terminal and ad-hoc formatting requirements.
To format the contents of a file using the fmt
command pass a file, files or standard input to the command. The result will be printed to standard output. In the following example there is a file of latin text named text.txt
. Using the cat tool it is possible to see that this file is unformatted.
cat text.txt
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse diam enim, faucibus ut cursus vel, dictum et risus. Donec elementum, lacus in pulvinar pretium, ex risus porttitor tortor, ac faucibus leo ante sed mauris. Proin volutpat urna ut faucibus placerat. Ut dictum tristique nibh quis ornare.
To file contents can be sorted using the fmt
command.
fmt text.txt
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse
diam enim, faucibus ut cursus vel, dictum et risus. Donec elementum,
lacus in pulvinar pretium, ex risus porttitor tortor, ac faucibus
leo ante sed mauris. Proin volutpat urna ut faucibus placerat. Ut
dictum tristique nibh quis ornare.
The default width is 75 columns.
By default fmt
sets the column width at 75. This can be changed with the --width
option.
fmt --width 10 text.txt
Aenean sodales, dolor at
dictum venenatis, nisl nibh
eleifend nunc, sed viverra
To preserve first line indentation using the fmt
command the -t
option may be used. This ensures that indentation of the first lines of a paragraph is preseved. In the following example the first line is indented.
cat lorum.txt
Aenean sodales, dolor at dictum venenatis, nisl nibh eleifend nunc, sed viverra turpis sapien ut urna. Fusce ornare tristique tortor sit amet sodales. Interdum et malesuada fames ac ante ipsum primis in faucibus. Etiam rhoncus hendrerit sem a vulputate.
Suspendisse potenti. Praesent sit amet vehicula tortor, nec pharetra arcu. Curabitur at sollicitudin sapien. Fusce eget pulvinar velit. Morbi a elit nec odio ornare ullamcorper. Etiam vulputate ex ac metus vehicula sollicitudin.
By default fmt
removes this indentation.
fmt lorum.txt
Aenean sodales, dolor at dictum venenatis, nisl nibh eleifend
nunc, sed viverra turpis sapien ut urna. Fusce ornare tristique
tortor sit amet sodales. Interdum et malesuada fames ac ante
ipsum primis in faucibus. Etiam rhoncus hendrerit sem a vulputate.
Suspendisse potenti. Praesent sit amet vehicula tortor, nec
pharetra arcu. Curabitur at sollicitudin sapien. Fusce eget
pulvinar velit. Morbi a elit nec odio ornare ullamcorper.
Etiam vulputate ex ac metus vehicula sollicitudin.
To preserve indentation the -t
option may be used.
fmt -t lorum.txt
Aenean sodales, dolor at dictum venenatis, nisl nibh eleifend nunc,
sed viverra turpis sapien ut urna. Fusce ornare tristique tortor sit
amet sodales. Interdum et malesuada fames ac ante ipsum primis in
faucibus. Etiam rhoncus hendrerit sem a vulputate.
Suspendisse potenti. Praesent sit amet vehicula tortor, nec pharetra
arcu. Curabitur at sollicitudin sapien. Fusce eget pulvinar velit. Morbi
a elit nec odio ornare ullamcorper. Etiam vulputate ex ac metus
vehicula sollicitudin.
To enforce uniform spacing using the fmt
command the -u
option may be used. This enforces one space between words and two after sentences.
echo 'this has different spaces' | fmt -u
this has different spaces
Have an update or suggestion for this article? You can edit it here and send me a pull request.