CLI tip 5: aligning columns
The column
command is a nifty tool to align input data column wise. By default, whitespace is used as the input delimiter. Space character is used to align the output columns, so whitespace characters like tab will get converted to spaces.
$ printf 'one two three\nfour five six\n'
one two three
four five six
$ printf 'one two three\nfour five six\n' | column -t
one two three
four five six
You can use the -s
option to customize the input delimiter. Note that the output delimiter will still be made up of spaces only.
$ cat scores.csv
Name,Maths,Physics,Chemistry
Ith,100,100,100
Cy,97,98,95
Lin,78,83,80
$ column -s, -t scores.csv
Name Maths Physics Chemistry
Ith 100 100 100
Cy 97 98 95
Lin 78 83 80
$ printf '1:-:2:-:3\napple:-:banana:-:cherry\n' | column -s:-: -t
1 2 3
apple banana cherry
Input should have a newline at the end, otherwise you'll get an error:
$ printf '1 2 3\na b c' | column -t
column: line too long
1 2 3
Video demo:
See my Linux Command Line Computing ebook and man column
for more details.