# column

## NAME



           column - columnate lists
    


## SYNOPSIS



           **column**[options] [_file_ ...]
    


## DESCRIPTION



           The **column** utility formats its input into multiple columns. It
           supports three modes:
    
           **fill columns before rows**
               This is the default mode (required for backwards
               compatibility).
    
           **fill rows before columns**
               This mode is enabled with the **-x, --fillrows** option.
    
           **create a table**
               Determine the number of columns the input contains and create
               a table. This mode is enabled with the **-t** /**--table** option.
               Output is aligned to the terminal width in interactive mode,
               and to 80 columns in non-interactive mode (see **--output-width**
               for more details). Custom formatting can be applied by using
               various **--table-** * options.
    
           Input is taken from _file_ , or otherwise from standard input. Empty
           lines are ignored and all invalid multibyte sequences are encoded
           with the x<hex> convention.
    


## OPTIONS



           The argument _columns_ , for the **--table-** * options below, is a
           comma-separated list of user-supplied names defined with
           **--table-columns** _name1_**,**_name2_**,**..., or indices of columns as they
           appear in the input, beginning with 1, or names defined through a
           **--table-column** attribute. It’s possible to mix names and indices.
           The special placeholder '0' (e.g. -R0) may be used to specify all
           columns and '-1' (e.g. -R -1) to specify the last visible column.
           It’s possible to use ranges like '1-5' when addressing columns by
           indices.
    
           **-J, --json**
               Use JSON output format to print the table. The option
               **--table-columns** is required and the option **--table-name** is
               recommended.
    
           **-c, --output-width** _width_
               Output is formatted to a width specified as a number of
               characters. Note that input longer than _width_ is not truncated
               by default. The default is the terminal width in interactive
               mode, and 80 columns in non-interactive mode. The column
               headers are never truncated.
    
               The placeholder **unlimited**(or **0**) can be used to prevent
               restricting the output width. This is recommended when
               redirecting output to a file.
    
               (The original long name of this option was **--columns** ; this
               name is deprecated since v2.30.)
    
           **-d, --table-noheadings**
               Omit printing the header. This option allows having
               user-supplied column names on the command line, but keeps the
               header hidden when printing the table.
    
           **-o, --output-separator** _string_
               Column delimiter for table output (default is two spaces).
    
           **-s, --separator** _separators_
               Possible input-item delimiters (default is whitespace).
    
           **-S, --use-spaces** _number_
               When not in table mode, use spaces instead of tabulators to
               align the columns. This option specifies the minimum number of
               spaces that separate two columns.
    
           **-t, --table**
               Determine the number of columns the input contains and create
               a table. Columns are by default delimited with whitespace, or
               with characters supplied using the **--output-separator** option.
               Table output is useful for pretty-printing.
    
           **--table-colorscheme** _name_
               Specifies color scheme. The default is name is "column". For
               more details see the **COLORS** section.
    
           **-C, --table-column** _attributes_
               Define a column with a comma-separated list of attributes.
               This option can be used more than once, every use defines a
               single column. Attributes replace some of the **--table-** *
               options: for example, **--table-column name=FOO,right** defines a
               column where text is aligned to the right. The option is
               mutually exclusive with **-N** /**--table-columns**.
    
               Supported attributes are:
    
               **name=**_string_
                   Column name.
    
               **trunc**
                   Truncate column text when necessary. The same as
                   **--table-truncate**.
    
               **right**
                   Right align text. The same as **--table-right**.
    
               **width=**_number_
                   Column width. It’s used only as a hint. To enforce it,
                   specify the **strictwidth** attribute as well.
    
               **strictwidth**
                   Strictly follow the **width=** setting.
    
               **noextreme**
                   Ignore unusually long content width. See **--table-noextreme**
                   for more details.
    
               **wrap**
                   Allow using a multi-line cell for long text if necessary.
                   See **--table-wrap** for more details.
    
               **hide**
                   Don’t print the column. See **--table-hide** for more details.
    
               **json=**_type_
                   Define the column type for JSON output. Supported types
                   are **string** , **number** and **boolean**.
    
               **color=**_name_
                   Define the column color for output on the terminal. The
                   _name_ is a color name (black, blink, blue, bold, brown,
                   cyan, darkgray, gray, green, halfbright, lightblue,
                   lightcyan, lightgray, lightgreen, lightmagenta, lightred,
                   magenta, red, reset, reverse, and yellow) or ANSI color
                   sequence number(s) separated by a semicolon, but without
                   the 'ESC[' prefix and 'm' suffix. For example, "37;41"
                   defines sequences for a red background and white
                   foreground. For more details see the **COLORS** section.
    
               **colorkey=**_name_
                   Addresses color as defined in the color scheme. See
                   **--table-colorscheme**.
    
               **headercolor=**_name_
                   Like color=, but define the color for column header only.
    
               **headercolorkey=**_name_
                   Addresses color for header as defined in the color scheme.
                   See **--table-colorscheme**.
    
           **-N, --table-columns** _names_
               Specify column names with a comma-separated list. The names
               are used for the table header and for column addressing in
               option arguments. See also **--table-column**.
    
           **-l, --table-columns-limit** _number_
               Specify the maximum number of input columns. The last column
               will contain all remaining line data if the limit is smaller
               than the number of columns in the input data.
    
           **-R, --table-right** _columns_
               Right align text in the specified columns.
    
           **-T, --table-truncate** _columns_
               Specify the columns where text can be truncated when
               necessary, otherwise very long table entries may be printed on
               multiple lines.
    
           **-E, --table-noextreme** _columns_
               Specify the columns where longer-than-average content should
               be ignored when calculating the column width. The option
               influences width calculation and table formatting, but the
               printed text is not affected.
    
               This option is active by default for the last visible column.
    
           **-e, --table-header-repeat**
               Print header line for each page.
    
           **-W, --table-wrap** _columns_
               Specify the columns where multi-line cells can be used for
               long text.
    
           **-H, --table-hide** _columns_
               Don’t print the specified columns. The special placeholder '**-** '
               may be used to hide all unnamed columns (see **--table-columns**).
    
           **-O, --table-order** _columns_
               Specify the output column order.
    
           **-n, --table-name** _name_
               Specify the table name used for JSON output. The default is
               "table".
    
           **-m, --table-maxout**
               Fill all available space on output.
    
           **-L, --keep-empty-lines**
               Preserve whitespace-only lines in the input. The default is to
               ignore all empty lines. This option’s original name was
               **--table-empty-lines** , but has since been deprecated because it
               gives the false impression that the option only applies to
               table mode.
    
           **-r, --tree** _column_
               Specify the column to use for a tree-like output. Note that
               the circular dependencies and other anomalies in child and
               parent relation are silently ignored.
    
           **-i, --tree-id** _column_
               Specify the column that contains each line’s unique child ID
               for a child-parent relation.
    
           **-p, --tree-parent** _column_
               Specify the column that contains each line’s parent ID for a
               child-parent relation.
    
           **-x, --fillrows**
               Fill rows before filling columns.
    
           **--color**[**=**_when_]
               Colorize the output. The optional argument _when_ can be **auto** ,
               **never** or **always**. If the _when_ argument is omitted, it defaults
               to **auto**. The colors can be disabled; for the current built-in
               default see the **--help** output. See also the **COLORS** section.
    
           **-h** , **--help**
               Display help text and exit.
    
           **-V** , **--version**
               Display version and exit.
    


## COLORS



           The output colorization is implemented by terminal-colors.d(5)
           functionality. Implicit coloring can be disabled by an empty file
    
              _/etc/terminal-colors.d/column.disable_
    
           for the **column** command or for all tools by
    
              _/etc/terminal-colors.d/disable_
    
           Since version 2.41, the $NO_COLOR environment variable is also
           supported to disable output colorization unless explicitly enabled
           by a command-line option.
    
           The user-specific _$XDG_CONFIG_HOME/terminal-colors.d_ or
           _$HOME/.config/terminal-colors.d_ overrides the global setting.
    
           Note that the output colorization may be enabled by default, and
           in this case _terminal-colors.d_ directories do not have to exist
           yet.
    
           The default color scheme name is "column," and it can be
           overridden by
    
              **--table-colorscheme name**
    
           Then _name_[.disable|enable|scheme] file may be used in
           /etc/terminal-colors.d/, $XDG_CONFIG_HOME/terminal-colors.d, or
           $HOME/.config/terminal-colors.d/.
    
           The logical color name (key) in the color scheme may be addressed
           by column properties colorkey= and headercolorkey=. For example
    
               echo 'important red'           > ~/.config/terminal-colors.d/cooltable.scheme
               echo 'important-header 37;41' >> ~/.config/terminal-colors.d/cooltable.scheme
               echo -e "a b c\naa bb cc\naaa bbb ccc" | column -t \
                       --table-colorscheme=cooltable \
                       -C name=AAA,colorkey=important,headercolorkey=important-header \
                       -C name=BBB,color=magenta,headercolor=cyan \
                       -C name=CCC,color=green
    
           This will create a color scheme with the name "cooltable" and
           colorize the first column header and data according to keys from
           the scheme. The other two columns will be colorized by direct
           color names.
    


## ENVIRONMENT



           The environment variable **COLUMNS** is used to determine the size of
           the screen if no other information is available.
    


## BUGS



           Version 2.23 changed the **-s** option to be non-greedy, for example:
    
               printf "a:b:c\n1::3\n" | column -t -s ':'
    
           Old output:
    
               a  b  c
               1  3
    
           New output (since util-linux 2.23):
    
               a  b  c
               1     3
    
           Historical versions of this tool indicated that "rows are filled
           before columns" by default, and that the **-x** option reverses this.
           This wording did not reflect the actual behavior, and it has since
           been corrected (see above). Other implementations of **column** may
           continue to use the older documentation, but the behavior should
           be identical in any case.
    


## EXAMPLES



           Print fstab with a header line and align numbers to the right:
    
               sed 's/#.*//' /etc/fstab | column --table --table-columns SOURCE,TARGET,TYPE,OPTIONS,FREQ,PASS --table-right FREQ,PASS
    
           Print fstab and hide unnamed columns:
    
               sed 's/#.*//' /etc/fstab | column --table --table-columns SOURCE,TARGET,TYPE --table-hide -
    
           Print a tree:
    
               echo -e '1 0 A\n2 1 AA\n3 1 AB\n4 2 AAA\n5 2 AAB' | column --tree-id 1 --tree-parent 2 --tree 3
               1  0  A
               2  1  |-AA
               4  2  | |-AAA
               5  2  | `-AAB
               3  1  `-AB
    


## AVAILABILITY



           The **column** command is part of the util-linux package which can be
           downloaded from Linux Kernel Archive
           <https://www.kernel.org/pub/linux/utils/util-linux/>. This page is
           part of the _util-linux_ (a random collection of Linux utilities)
           project. Information about the project can be found at 
           ⟨https://www.kernel.org/pub/linux/utils/util-linux/⟩. If you have a
           bug report for this manual page, send it to
           util-linux@vger.kernel.org. This page was obtained from the
           project's upstream Git repository
           ⟨git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git⟩ on
           2025-08-11. (At that time, the date of the most recent commit that
           was found in the repository was 2025-08-05.) If you discover any
           rendering problems in this HTML version of the page, or you
           believe there is a better or more up-to-date source for the page,
           or you have corrections or improvements to the information in this
           COLOPHON (which is _not_ part of the original manual page), send a
           mail to man-pages@man7.org
    
    util-linux 2.42-start-521-ec46  2025-08-09                      _COLUMN_(1)
    


* * *