[BACK]Return to colrm.1 CVS log [TXT][DIR] Up to [local] / src / usr.bin / colrm

File: [local] / src / usr.bin / colrm / colrm.1 (download)

Revision 1.9, Mon Jan 18 20:31:36 2016 UTC (8 years, 4 months ago) by schwarze
Branch: MAIN
CVS Tags: OPENBSD_6_0_BASE, OPENBSD_6_0, OPENBSD_5_9_BASE, OPENBSD_5_9
Changes since 1.8: +50 -5 lines

UTF-8 support:
Cut by display columns rather than by character positions because
the latter would be useless in the presence of combining zero-width
characters.  Similarly, let tab advance to display columns rather
than to character positions.

For compatibility with nroff and man(1) output, let backspace back
up one character rather than on display column.  But for compatibility
with POSIX fold(1), *if* two backspaces follow a double-width character,
ignore the second one.

Fix some bugs while here:  Delete backspaces that immediately follow
deleted characters.  Expand tabs intersecting deletions, such that
part of the blanks can be removed.  Expand tabs following deletions,
or they would no longer align with adjacent lines without tabs.

OK jmc@ on a previous version of the manual.
No opposition when shown on tech@.

.\"	$OpenBSD: colrm.1,v 1.9 2016/01/18 20:31:36 schwarze Exp $
.\"	$NetBSD: colrm.1,v 1.3 1995/03/26 09:04:01 glass Exp $
.\"
.\" Copyright (c) 1980, 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. 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.
.\"
.\"     @(#)colrm.1	8.1 (Berkeley) 6/6/93
.\"
.Dd $Mdocdate: January 18 2016 $
.Dt COLRM 1
.Os
.Sh NAME
.Nm colrm
.Nd remove columns from a file
.Sh SYNOPSIS
.Nm colrm
.Op Ar start Op Ar stop
.Sh DESCRIPTION
.Nm
removes selected columns from the lines of a file.
Input is read from the standard input.
Output is written to the standard output.
.Pp
If only the
.Ar start
column is specified, columns numbered less than the
.Ar start
column will be written.
If both
.Ar start
and
.Ar stop
columns are specified, columns numbered less than the
.Ar start
column
or greater than the
.Ar stop
column will be written.
Column numbering starts with one, not zero.
.Pp
Each character occupies the number of columns defined by
.Xr wcwidth 3 .
Zero-width characters belong to the previous column rather
than to the following column.
If deletion of half of a double-width character is requested,
its remaining half is replaced by a blank character.
Non-printable characters are treated as if they had width 1.
Each invalid byte is regarded as a non-printable character.
.Pp
Tab characters increment the input column count to the next multiple
of eight.
If they intersect or follow a deletion, they are expanded to blank
characters such that the original alignment is preserved.
.Pp
Backspace characters decrement the column count by the width of the
previous character.
If they follow a character that is completely or partially deleted,
they are deleted together with that character.
If they follow a character that is partially deleted,
they also suppress printing of the replacement blank character.
.Pp
For compatibility with
.St -p1003.1-2008
.Xr fold 1 ,
if a double-width character is followed by two backspace characters
instead of the usual one, both are regarded as belonging to that
character, and the second one does not decrement the column count.
.Sh ENVIRONMENT
.Bl -tag -width LC_CTYPE
.It Ev LC_CTYPE
The character set
.Xr locale 1 .
It decides which sequences of bytes are treated as characters,
and what their display width is.
If unset or set to
.Qq C ,
.Qq POSIX ,
or an unsupported value, each byte except tab and backspace is treated
as a character of width 1.
.El
.Sh SEE ALSO
.Xr awk 1 ,
.Xr column 1 ,
.Xr cut 1 ,
.Xr paste 1
.Sh HISTORY
The
.Nm
utility first appeared in
.Bx 1 .
.Sh AUTHORS
.An Jeff Schriebman
wrote the original version of
.Nm
in November 1974.
.Sh BUGS
If two characters of different widths are followed by two backspace
characters in a row, the column count is decremented twice by the
width of the second character rather than by the sum of both widths.
This is hardly a practical problem because not even backspace
encoding in
.Xr roff 7
style uses such double-backspace sequences.