Credit: Thinkstock The Linux column command makes it easy to display data in a columnar format — often making it easier to view, digest, or incorporate into a report. While column is a command that’s simple to use, it has some very useful options that are worth considering. In the examples in this post, you will get a feel for how the command works and how you can get it to format data in the most useful ways. By default, the column command will ignore blanks lines in the input data. When displaying data in multiple columns, it will organize the content by filling the left column first and then moving to the right. For example, a file containing numbers 1 to 12 might be displayed in this order: 1 4 7 10 2 5 8 11 3 6 9 12 A file with some well known lyrics might look like this: $ cat RR I've been working on the railroad All the live long day I've been working on the railroad Just to pass the time away Can't you hear the whistle blowing Rise up so early in the morn Can't you hear the whistle blowing Dinah, blow your horn Dinah, won't you blow Dinah, won't you blow Dinah, won't you blow your horn Dinah, won't you blow, Dinah, won't you blow, Dinah, won't you blow your horn When we pass the file of lyrics through the column command, we’ll see it in this space-saving format: $ column RR I've been working on the railroad Dinah, blow your horn All the live long day Dinah, won't you blow I've been working on the railroad Dinah, won't you blow Just to pass the time away Dinah, won't you blow your horn Can't you hear the whistle blowing Dinah, won't you blow, Rise up so early in the morn Dinah, won't you blow, Can't you hear the whistle blowing Dinah, won't you blow your horn Note that the blank lines we saw in the original file have been removed. If you want the empty lines included in your output, simply use the -e (include empty) option. $ column -e RR I've been working on the railroad Dinah, blow your horn All the live long day I've been working on the railroad Dinah, won't you blow Just to pass the time away Dinah, won't you blow Dinah, won't you blow your horn Can't you hear the whistle blowing Dinah, won't you blow, Rise up so early in the morn Dinah, won't you blow, Can't you hear the whistle blowing Dinah, won't you blow your horn If you want the data displayed from left to right and then down (row first rather than column first), use the -x option. Think of this as selecting the X axis in a graph. $ column -x RR I've been working on the railroad All the live long day I've been working on the railroad Just to pass the time away Can't you hear the whistle blowing Rise up so early in the morn Can't you hear the whistle blowing Dinah, blow your horn Dinah won't you blow Dinah won't you blow Dinah, won't you blow your horn Dinah, won't you blow, Dinah, won't you blow, Dinah, won't you blow your horn If the fields in your file are separated by commas, colons, or some other character, you can place each field in its own “cell” by specifying the employed delimiter. Say this were the input file: $ cat abc a:b:c:d:e Using the column command with the delimeter specified, we would get this: $ column -t -s: abc a b c d e In the command below, we send the data using a pipe and get the same effect. The other lines were added to label the two arguments. create table -----+ +----- input delimeter | | V V $ echo a:b:c | column -t -s: a b c The column command creates as many columns as it has room for in your terminal window. Stretch out your terminal window and you might see more columns. And each column will have the same width regardless of how long the content in any particular column will be. The longest line in your file will determine the column width. If any line takes more than half the width of your terminal window, you’ll only get one column in your entire display. $ cat poem The rain in Spain falls mainly on the plain and that is why the plain is so very wet $ column poem The rain falls mainly and that is why very wet in Spain on the plain the plain is so If the last three lines were a single line, the output would look like this instead. $ column poem The rain in Spain falls mainly on the plain and that is why the plain is so very wet On the other hand, you can specify the width of your display (even if it exceeds the width of the actual display) using the -c option. If you specify a ridiculously wide display, your data will wrap around on your display, but it still might be a single line. Here’s what the RR file would look like on a typical terminal window if we tell the command that our window is 1,000 characters wide: $ column -c 1000 RR I've been working on the railroad All the live long day I 've been working on the railroad Just to pass the time away C an't you hear the whistle blowing Rise up so early in the morn C an't you hear the whistle blowing Dinah, blow your horn D inah won't you blow Dinah won't you blow D inah, won't you blow your horn Dinah, won't you blow, D inah, won't you blow, Dinah, won't you blow your horn Yet, it’s easy to show that it’s actually a single line of text: $ column -c 1000 RR | wc -l 1 If you want a simple list showing how many times each user has logged in recently, you can use the column command in a pipe like this: $ last | grep pts | awk '{print $1}' | sort | uniq -c | column 12 jdoe 41 mdoe 25 shs 19 aguy You can also use the column command in a script to make some potentially useful tables. In the script below, we’re using the column command to create a table with numbers from 1 to 50. #!/bin/bash for y in {1..5} do for x in {1..10} do echo -n "| $((y*x)) " done echo done | column -t $ ./doit | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | 3 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 | 30 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | 32 | 36 | 40 | 5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 The column command probably isn’t going to make anyone’s top 10 list, but it can save you a lot of time when you might otherwise have to reorganize data by hand. 2-Minute Linux Tip: Learn how to use the crontab command Related content how-to Compressing files using the zip command on Linux The zip command lets you compress files to preserve them or back them up, and you can require a password to extract the contents of a zip file. By Sandra Henry-Stocker May 13, 2024 4 mins Linux opinion NSA, FBI warn of email spoofing threat Email spoofing is acknowledged by experts as a very credible threat. By Sandra Henry-Stocker May 13, 2024 3 mins Linux how-to The logic of && and || on Linux These AND and OR equivalents can be used in scripts to determine next actions. By Sandra Henry-Stocker May 02, 2024 4 mins Linux how-to Using the apropos command on Linux By Sandra Henry-Stocker Apr 24, 2024 3 mins Linux PODCASTS VIDEOS RESOURCES EVENTS NEWSLETTERS Newsletter Promo Module Test Description for newsletter promo module. Please enter a valid email address Subscribe