How to Use the `column` Command (with Examples)
The column
command-line utility is a versatile tool designed to format text into multiple columns, preparing it for easy readability in terminal displays. Whether dealing with output from other commands or content from files, column
ensures data is structured neatly, enhancing user interaction. It provides options for specifying output width, filling columns before rows, and defining custom delimiters. Utilizing column
can simplify the process of visualizing and interpreting text data in a formatted tabular display.
Format the Output of a Command for a 30 Characters Wide Display
Code:
printf "header1 header2\nbar foo\n" | column --output-width 30
Motivation:
Using the column
command with specific output width specifications is particularly beneficial when dealing with long lines of text that could exceed the terminal’s default width. By defining a specific width, such as 30 characters in this case, users can prevent text truncation or wrapping issues, making it easier to read and analyze the data displayed within the terminal. Setting a fixed width can also promote consistency across different outputs, ensuring uniformity in the appearance of data visualization.
Explanation:
printf "header1 header2\nbar foo\n"
: This command prints text to standard output. Here, it generates a basic two-row output with two values in each row.|
: This pipe operator directs theprintf
output to thecolumn
command for further processing.column
: The main command used to process and format the text into columns.--output-width 30
: This option sets the width of the entire output to 30 characters. The content is organized into columns that fit within this specified width.
Example Output:
header1 header2
bar foo
The output is neatly formatted to fit within a 30-character wide display.
Split Columns Automatically and Auto-Align Them in a Tabular Format
Code:
printf "header1 header2\nbar foo\n" | column --table
Motivation:
In scenarios where you need data to be visually separated and aligned for improved readability, using the column command with the table option becomes invaluable. This option automatically organizes data into a structured format that resembles a table, ensuring that headers are aligned with their associated data, which is particularly useful when you need to quickly scan through complex datasets.
Explanation:
printf "header1 header2\nbar foo\n"
: Generates two rows of simple data, with headers and entries separated by a space.|
: The pipe operator facilitates the transfer of text data fromprintf
output to thecolumn
command.column --table
: The--table
option aligns the input data into a tabular format, automatically adjusting the column widths to fit the content appropriately.
Example Output:
header1 header2
bar foo
This example output shows a cleanly formatted table with data organized neatly under its respective headers.
Specify the Column Delimiter Character for the --table
Option
Code:
printf "header1,header2\nbar,foo\n" | column --table --separator ,
Motivation:
Many datasets, especially those exported from spreadsheet applications, come in CSV (Comma-Separated Values) format. When dealing with such data, it’s advantageous to specify delimiters to ensure column
parses the data correctly. The ability to define a separator makes column
a versatile tool for text data processing tasks involving different data formats.
Explanation:
printf "header1,header2\nbar,foo\n"
: Simulates a CSV-like input where columns are separated by commas.|
: Directs the output ofprintf
into thecolumn
command.column --table --separator ,
: Formats the input data as a table and uses commas as the specified column delimiter, aligning data correctly based on this separator.
Example Output:
header1 header2
bar foo
The input data is parsed and displayed in a table format using a comma as the delimiter, demonstrating how the --separator
option functions as intended.
Fill Rows Before Filling Columns
Code:
printf "header1\nbar\nfoobar\n" | column --output-width 30 --fillrows
Motivation:
In certain circumstances, particularly when working with text organized predominantly in a vertical layout, you may want to prioritize filling rows with content before moving on to fill columns. This approach can be handy for displaying data in a more traditional reading order, thus aiding in shipping, viewing, or comparing vertically-arranged data easily.
Explanation:
printf "header1\nbar\nfoobar\n"
: Presents a simple vertical list of text data, which becomes the input to be formatted using thecolumn
command.|
: Sends the output ofprintf
tocolumn
.column --output-width 30 --fillrows
: This configures the output with a predefined width of 30 characters, but most importantly alters the default column-filling behavior to fill rows first by using the--fillrows
option.
Example Output:
header1 bar
foobar
The rows are filled fully before moving on to the next column, displaying the text data in a manner that maintains logical reading flow.
Conclusion:
The column
command offers a variety of flexible formatting options for displaying text data in an orderly, readable format. Whether setting a custom width, aligning data into tables, specifying delimiters, or filling rows before columns, column
proves its usefulness for making data more digestible and reader-friendly in terminal environments. Whatever your text formatting needs, exploring the column
command’s capabilities will greatly enhance how you present and interact with textual data.