manpagez: man pages & more
man column(1)
Home | html | info | man
column(1)                        User Commands                       column(1)


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, --input-separator, --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 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. Note that the column header is never
               truncated, and it is the minimal column width.

           tree
               Use this column for tree-like output. See --tree for more
               details.

           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. The actual minimum width is
               the column header width.

           strictwidth
               Strictly follow the width= to set the minimum size of the
               column. The column can be larger if the output width provides
               enough space.

           noextremes
               Ignore unusually long content width. See --table-noextreme for
               more details.

           hidden
               Don't print the column. See --table-hide for more details.

           wrap
               Allow the use of a multi-line cell for long text if necessary.
               Note that the column header is never wrapped and determines the
               minimum column width. See --table-wrap for more details.

           wrapnl
               Wrap at newline characters; newlines in cell data are treated
               as line breaks.

           wrapzero
               Wrap at zero (NUL) characters in cell data.

           json=type
               Define the column type for JSON output. Supported types are
               string, number, float, array-string, array-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.

       -K, --table-header-as-columns
           Use the first input line as table header. This option is mutually
           exclusive with --table-columns and --table-column.

       -W, --table-wrap columns
           Specify the columns where multi-line cells can be used for long
           text. By default, text is wrapped according to column width. Use
           --wrap-separator to wrap at custom separator characters instead.
           Note that the column header is never wrapped and determines the
           minimum column width.

       --wrap-separator string
           Use string as a separator for wrapping text within columns that
           have wrapping enabled. The separator is replaced with newlines when
           the text is displayed. This option requires table mode and columns
           with wrapping enabled (see --table-wrap). For example, use | to
           allow wrapping at pipe characters within column data.

       -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

       COLUMNS
           is used to determine the size of the screen if no other information
           is available.

       LIBSMARTCOLS_DEBUG=all
           enables libsmartcols debug output.

       LIBSMARTCOLS_DEBUG_PADDING=on
           use visible padding characters.


HISTORY

       The column command appeared in 4.3BSD-Reno.


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

       Print table with custom wrap separator:

           echo -e 'Name:Description\nJohn:A|software|developer\nJane:A|data|scientist' | column --table --separator ':' --table-wrap 2 --wrap-separator '|'
           Name  Description
           John  A
                 software
                 developer
           Jane  A
                 data
                 scientist


SEE ALSO

       colrm(1), ls(1), paste(1), sort(1)


REPORTING BUGS

       For bug reports, use the issue tracker
       <https://github.com/util-linux/util-linux/issues>.


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/>.

util-linux 2.42.2                 2026-06-16                         column(1)

util-linux 2.42.2 - Generated Thu Aug 27 18:36:07 CDT 2026
© manpagez.com 2000-2026
Individual documents may contain additional copyright information.