pr

pr is another of those less well-known formatting commands, but it is very useful in the right situation. The headers are not often useful, so pr -t is a good starting point. You can also omit all pagination with -T, which is often more useful when displaying onscreen rather than for print layout. As used in worldcup.sh, pr acts a bit like join, in that it was used to paste four columns of text together into a single page. It can also split single input into multiple columns, much like the ls command does when run interactively. Here a list of 30 rivers would be too much to list one by one, but pr can split them automatically into as many neat and tidy columns as required.

wc -l rivers.txt
30 rivers.txt
$ pr -T -4 rivers.txt
Alamance          Deschutes         Koochiching       Rappahannock
Asotin            Escambia          Latah             Scioto
Beaver            Greenbrier        Merrimack         Tallapoosa
Boise             Humboldt          Mississippi       Tensas
Brazos            Iowa              Neosho            Vermilion
Cassia            Judith Basin      Osage             Wabash
Chattahoochee     Kalamazoo         Platte            Yamill
Clearwater        Kankakee
$ pr -T -5 rivers.txt Alamance      Chattahoochee Iowa          Merrimack     Scioto Asotin        Clearwater    Judith Basin  Mississippi   Tallapoosa Beaver        Deschutes     Kalamazoo     Neosho        Tensas Boise         Escambia      Kankakee      Osage         Vermilion Brazos        Greenbrier    Koochiching   Platte        Wabash ...

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.