Fmt

fmt, part of the GNU coreutils package, is a classic example of a useful but little-known system tool. Its purpose is to format lines of text, much like the trimline.sh script in Chapter 7. In addition to being able to split lines and optionally merge shorter lines together, it has a very useful feature in the -p option, which is most useful for languages (such as the shell, with the # symbol, or C/C++ with its // notation), that use a marker for whole-line comments. fmt can also do some basic formatting; the -u flag tells it to make sure that there is exactly one space between each word and two spaces after a period.

This first one-line script invokes fmt with a small excerpt from Gulliver’s Travels. As the cat command shows, the original gulliver.txt has no real formatting, but fmt -ut fixes word wrap, word spacing, and even indentation.

cat gulliver.txt CHAPTER I. The author gives some account of himself and family. His first inducements to tr avel. He is shipwrecked, and swims for his life. Gets safe on shore in the count ry of Lilliput; is made a prisoner, and carried up the country. My father had a small estate in Nottinghamshire: I was the third of five sons. H e sent me to Emanuel College in Cambridge at fourteen years old, where I resided  three years, and applied myself close to my studies; but the charge of maintain ing me, although I had a very scanty allowance, being too great for a narrow for tune, I was bound apprentice to Mr. James Bates, an eminent surgeon ...

Get Shell Scripting: Expert Recipes for Linux, Bash, and More now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.