.\" Copyright (c) 1990 The Regents of the University of California.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to Berkeley by
.\" Michael Rendell.
.\"
.\" 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.
.\"
.\"     @(#)col.1	6.8 (Berkeley) 6/17/91
.\"
.TH COL "1" "July 2014" "util-linux" "User Commands"
.SH NAME
col \- filter reverse line feeds from input
.SH SYNOPSIS
.B col
[options]
.SH DESCRIPTION
.B col
filters out reverse (and half-reverse) line feeds so the output is in the
correct order, with only forward and half-forward line feeds.  It also replaces
any whitespace characters with tabs where possible.  This can be useful in
processing the output of
.BR nroff (1)
and
.BR tbl (1).
.PP
.B col
reads from standard input and writes to standard output.
.SH OPTIONS
.TP
\fB\-b\fR, \fB\-\-no\-backspaces\fR
Do not output any backspaces, printing only the last character written to
each column position.
.TP
\fB\-f\fR, \fB\-\-fine\fR
Permit half-forward line feeds.
Normally characters destined for a half-line boundary are printed on the
following line.
.TP
\fB\-h\fR, \fB\-\-tabs\fR
Output tabs instead of multiple spaces.
.TP
\fB\-l\fR, \fB\-\-lines\fR \fInumber\fR
Buffer at least
.I number
lines in memory.  By default, 128 lines are buffered.
.TP
\fB\-p\fR, \fB\-\-pass\fR
Force unknown control sequences to be passed through unchanged.  Normally
.B col
will filter out any control sequences other than those
recognized and interpreted by itself, which are listed below.
.TP
\fB\-x\fR, \fB\-\-spaces\fR
Output multiple spaces instead of tabs.
.TP
\fB\-V\fR, \fB\-\-version\fR
Display version information and exit.
.TP
\fB\-H\fR, \fB\-\-help\fR
Display help text and exit.
.SH NOTES
The control sequences for carriage motion that
.B col
understands and their decimal values are listed in the following table:
.PP
.RS
.PD 0
.TP 18
.B ESC\-7
reverse line feed (escape then 7)
.TP
.B ESC\-8
half reverse line feed (escape then 8)
.TP
.B ESC\-9
half forward line feed (escape then 9)
.TP
.B backspace
moves back one column (8); ignored in the first column
.TP
.B newline
forward line feed (10); also does carriage return
.TP
.B carriage return
(13)
.TP
.B shift in
shift to normal character set (15)
.TP
.B shift out
shift to alternate character set (14)
.TP
.B space
moves forward one column (32)
.TP
.B tab
moves forward to next tab stop (9)
.TP
.B vertical tab
reverse line feed (11)
.PD
.RE
.PP
All unrecognized control characters and escape sequences are discarded.
.PP
.B col
keeps track of the character set as characters are read and makes sure the
character set is correct when they are output.
.PP
If the input attempts to back up to the last flushed line,
.B col
will display a warning message.
.SH SEE ALSO
.BR expand (1),
.BR nroff (1),
.BR tbl (1)
.SH STANDARDS
The
.B col
utility conforms to the Single UNIX Specification, Version 2.  The
.B \-l
option is an extension to the standard.
.SH HISTORY
A
.B col
command appeared in Version 6 AT&T UNIX.
.SH AVAILABILITY
The col command is part of the util-linux package and is available from
.UR https://\:www.kernel.org\:/pub\:/linux\:/utils\:/util-linux/
Linux Kernel Archive
.UE .
