.\" Copyright (c) 1989, 1990, 1993
.\"	The Regents of the University of California.  All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"     @(#)column.1	8.1 (Berkeley) 6/6/93
.\"
.TH COLUMN 1 "February 2019" "util-linux" "User Commands"
.SH NAME
column \- columnate lists
.SH SYNOPSIS
.BR column " [options]"
.RI [ file ...]
.SH DESCRIPTION
The
.B column
utility formats its input into multiple columns.  The util support three modes:
.TP
.B columns are filled before rows
This is the default mode (required by backward compatibility).
.TP
.B rows are filled before columns
This mode is enabled by option \fB-x, \-\-fillrows\fP
.TP
.B table
Determine the number of columns the input contains and create a table.  This
mode is enabled by option \fB-t, \-\-table\fP and columns formatting is
possible to modify by \fB\-\-table-*\fP options.  Use this mode if not sure.
.PP
Input is taken from \fIfile\fR, or otherwise from standard input.  Empty lines
are ignored and all invalid multibyte sequences are encoded by \\x<hex> convention.
.PP
.SH OPTIONS
The argument \fIcolumns\fP for \fB\-\-table-*\fP options is comma separated
list of the column names as defined by \fB\-\-table-columns\fP or it's column
number in order as specified by input. It's possible to mix names and numbers.
.PP
.IP "\fB\-J, \-\-json\fP"
Use JSON output format to print the table, the option
\fB\-\-table\-columns\fP is required and the option \fB\-\-table\-name\fP is recommended.
.IP "\fB\-c, \-\-output\-width\fP \fIwidth\fP"
Output is formatted to a width specified as number of characters. The original
name of this option is --columns; this name is deprecated since v2.30. Note that input
longer than \fIwidth\fP is not truncated by default.
.IP "\fB\-d, \-\-table\-noheadings\fP"
Do not print header. This option allows to use logical column names on command line, but keep the header hidden when print the table.
.IP "\fB\-o, \-\-output\-separator\fP \fIstring\fP"
Specify the columns delimiter for table output (default is two spaces).
.IP "\fB\-s, \-\-separator\fP \fIseparators\fP"
Specify the possible input item delimiters (default is whitespace).
.IP "\fB\-t, \-\-table\fP"
Determine the number of columns the input contains and create a table.
Columns are delimited with whitespace, by default, or with the characters
supplied using the \fB\-\-output\-separator\fP option.
Table output is useful for pretty-printing.
.IP "\fB\-N, \-\-table-columns\fP \fInames\fP"
Specify the columns names by comma separated list of names. The names are used
for the table header or to address column in option arguments.
.IP "\fB\-R, \-\-table-right\fP \fIcolumns\fP"
Right align text in the specified columns.
.IP "\fB\-T, \-\-table-truncate\fP \fIcolumns\fP"
Specify columns where is allowed to truncate text when necessary, otherwise
very long table entries may be printed on multiple lines.
.IP "\fB\-E, \-\-table-noextreme\fP \fIcolumns\fP"
Specify columns where is possible to ignore unusually long (longer than
average) cells when calculate column width.  The option has impact to the width
calculation and table formatting, but the printed text is not affected.

The option is used for the last visible column by default.

.IP "\fB\-e, \-\-table\-header\-repeat\fP"
Print header line for each page.
.IP "\fB\-W, \-\-table-wrap\fP \fIcolumns\fP"
Specify columns where is possible to use multi-line cell for long text when
necessary.
.IP "\fB\-H, \-\-table-hide\fP \fIcolumns\fP"
Don't print specified columns. The special placeholder '-' maybe be used to
hide all unnamed columns (see --table-columns).
.IP "\fB\-O, \-\-table-order\fP \fIcolumns\fP"
Specify columns order on output.
.IP "\fB\-n, \-\-table-name\fP \fIname\fP"
Specify the table name used for JSON output. The default is "table".
.IP "\fB\-L, \-\-table\-empty\-lines\fP"
Insert empty line to the table for each empty line on input. The default
is ignore empty lines at all.
.IP "\fB\-r, \-\-tree\fP \fIcolumn\fP"
Specify column to use tree-like output. Note that the circular dependencies and
another anomalies in child and parent relation are silently ignored.
.IP "\fB\-i, \-\-tree\-id\fP \fIcolumn\fP"
Specify column with line ID to create child-parent relation.
.IP "\fB\-p, \-\-tree\-parent\fP \fIcolumn\fP"
Specify column with parent ID to create child-parent relation.
.PP
.IP "\fB\-x, \-\-fillrows\fP"
Fill rows before filling columns.
.IP "\fB\-V\fR, \fB\-\-version\fR"
Display version information and exit.
.IP "\fB\-h, \-\-help\fP"
Display help text and exit.
.SH ENVIRONMENT
The environment variable \fBCOLUMNS\fR is used to determine the size of
the screen if no other information is available.
.SH EXAMPLES
Print fstab with header line and align number to the right:
.EX
\fBsed 's/#.*//' /etc/fstab | column --table --table-columns SOURCE,TARGET,TYPE,OPTIONS,PASS,FREQ --table-right PASS,FREQ\fR
.EE
.PP
Print fstab and hide unnamed columns:
.EX
\fBsed 's/#.*//' /etc/fstab | column --table --table-columns SOURCE,TARGET,TYPE --table-hide -\fR
.EE
.PP

.PP
Print a tree:
.EX
\fBecho -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\fR
1  0  A
2  1  |-AA
4  2  | |-AAA
5  2  | `-AAB
3  1  `-AB
.EE
.SH BUGS
Version 2.23 changed the
.B \-s
option to be non-greedy, for example:
.PP
.EX
\fBprintf "a:b:c\\n1::3\\n" | column  -t -s ':'\fR
.EE
.PP
Old output:
.EX
a  b  c
1  3
.EE
.PP
New output (since util-linux 2.23):
.EX
a  b  c
1     3
.EE
.PP
Historical versions of this tool indicated that "rows are filled before
columns" by default, and that the
.B \-x
option reverses this. This wording did not reflect the actual behavior, and it
has since been corrected (see above). Other implementations of
.B column
may continue to use the older documentation, but the behavior should be
identical in any case.
.SH "SEE ALSO"
.BR colrm (1),
.BR ls (1),
.BR paste (1),
.BR sort (1)
.SH HISTORY
The column command appeared in 4.3BSD-Reno.
.SH AVAILABILITY
The column command is part of the util-linux package and is available from
https://www.kernel.org/pub/linux/utils/util-linux/.
