BSD 4_4_Lite2 release
[unix-history] / usr / src / usr.bin / sort / sort.1
index e0220db..574efc3 100644 (file)
-.\"    @(#)sort.1      6.1 (Berkeley) %G%
+.\" Copyright (c) 1991, 1993
+.\"    The Regents of the University of California.  All rights reserved.
 .\"
 .\"
-.TH SORT 1 ""
-.AT 3
-.SH NAME
-sort \- sort or merge files
-.SH SYNOPSIS
-.B sort
-[
-.if t \fB\-mubdf\&inrt\fIx\fR
-.if n -mubdfinrt\b\b\b\b\b\b\b\b\b_________x
-]
-[ \fB+\fIpos1 \fR [ \fB\-\fIpos2 \fR]
-] ...
-[ 
-.B \-o 
-name ] [
-.B \-T
-directory ] [ name ] ...
-.SH DESCRIPTION
-.I Sort
-sorts lines of all the named files together and writes the result on
-the standard output.  The name `\-' means the standard input.
-If no input files are named, the standard input is sorted.
-.LP
-The default sort key is an entire line.
-Default ordering is lexicographic by bytes in machine collating sequence.
-The ordering is affected globally by the following options,
-one or more of which may appear.
-.TP 5
-.B  b
-Ignore leading blanks (spaces and tabs) in field comparisons.
-.TP 5
-.B  d
-`Dictionary' order: only letters, digits and blanks
-are significant in comparisons.
-.TP 5
-.B  f
-Fold upper case letters onto lower case.
-.TP 5
-.B  i
-Ignore characters outside the ASCII range 040-0176 in nonnumeric comparisons.
-.TP 5
-.B  n
-An initial numeric string, consisting of optional blanks, optional minus sign,
-and zero or more digits with optional decimal point,
-is sorted by arithmetic value.  Option
-.B n
-implies option
-.B b.
-.TP 5
-.B  r
+.\" This code is derived from software contributed to Berkeley by
+.\" the Institute of Electrical and Electronics Engineers, Inc.
+.\"
+.\" 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.
+.\"
+.\"     @(#)sort.1     8.2 (Berkeley) 5/4/95
+.\"
+.Dd May 4, 1995
+.Dt SORT 1
+.Os
+.Sh NAME
+.Nm sort
+.Nd sort or merge text files
+.Sh SYNOPSIS
+.Nm sort
+.Op Fl mubdfinrtx
+.Oo
+.Cm \(pl Ns Ar pos1
+.Op Fl Ns Ar pos2
+.Oc
+.Ar ...
+.Op Fl o Ar output
+.Op Fl T Ar directory
+.Op Ar file
+.Ar ...
+.Sh DESCRIPTION
+The
+.Nm sort
+utility
+sorts text files by lines.
+Comparisons are based on one or more sort keys (or fields) extracted
+from each line of input, and are performed
+lexicographically. By default, if keys are not given,
+.Nm sort
+regards each input line as a single field.
+.Pp
+The following options are available:
+.Bl -tag -width indent
+.It Fl c
+Check that the single input file is sorted lexicographically.
+If the file is not sorted,
+.Nm sort
+sorts it and writes the sorted output to the standard output or the
+filename specified by the
+.Fl o
+option.
+.It Fl m
+Merge only; the input files are assumed to be pre-sorted.
+.It Fl o Ar output
+The argument given is the name of an
+.Ar output
+file to
+be used instead of the standard output.
+This file
+can be the same as one of the input files.
+.It Fl T Ar directory
+The argument
+.Ar directory
+is used for creating temporary files.
+.It Fl u
+Unique: suppress all but one in each set of lines
+having equal keys.
+If used with the
+.Fl c
+option,
+check that there are no lines with duplicate keys.
+.El
+.Pp
+The following options override the default ordering rules.
+When ordering options appear independent of key field
+specifications, the requested field ordering rules are
+applied globally to all sort keys.
+.\" When attached to a
+.\" specific key
+.\" (see
+.\" .Fl k ) ,
+.\" the specified ordering options override
+.\" all global ordering options for that key.
+.Bl -tag -width indent
+.It Fl d
+Only blank space and alphanumeric characters
+.\" according
+.\" to the current setting of LC_CTYPE
+are used
+in making comparisons.
+.It Fl f
+Considers all lowercase characters that have uppercase
+equivalents to be the same for purposes of
+comparison.
+.It Fl i
+Ignore all non-printable characters.
+.It Fl n
+An initial numeric string, consisting of optional
+blank space, optional minus sign, and zero or more
+digits (including decimal point)
+.\" with
+.\" optional radix character and thousands
+.\" separator
+.\" (as defined in the current locale),
+is sorted by arithmetic value.
+The
+.Fl n
+option implies
+the
+.Fl b
+option. (See below.)
+Note that the
+.Fl b
+option
+is only effective when key fields have been specified
+and that
+.Fl \&0
+is considered equal to zero.
+.It Fl r
 Reverse the sense of comparisons.
 Reverse the sense of comparisons.
-.TP 5
-.BI t x
-`Tab character' separating fields is
-.IR x .
-.LP
-The notation
-.BI + "pos1 " "\-\fIpos2"
-restricts a sort key to a field beginning at
-.I pos1
-and ending just before
-.IR pos2 .
-.I Pos1
+.El
+.Pp
+The treatment of field separators can be altered using the
+options:
+.Bl -tag -width indent
+.It Fl b
+Leading blank spaces are ignored when determining the starting
+ending positions of a restricted sort key.
+If the
+.Fl b
+option is specified before the first
+.Cm \(pl Ns Ar pos1
+argument, it shall be applied to all
+.Cm \(pl Ns Ar pos1
+arguments.
+Otherwise, the
+.Fl b
+option can be
+attached independently to each
+.Cm \(pl Ns Ar pos1
+or
+.Fl Ar pos2
+argument (see below).
+.It Fl t Ar char
+.Ar Char
+is used as the field separator character;
+.Ar char
+is not considered to be part of a field (although it
+can be included in a sort key).
+Each occurrence of
+.Ar char
+is significant (for example,
+.Dq Ar charchar
+delimits an empty field).
+If
+.Fl t
+is not specified,
+blank space characters are used as default field
+separators.
+.It Cm \(pl Ns Ar pos1
+Designates the start position of a key field.
+.It Fl Ns Ar pos1
+Designates the end position of a key field.
+.El
+.Pp
+The following operands are available:
+.Bl -tag -width indent
+.Ar file
+The pathname of a file to be sorted, merged, or checked.
+If no file
+operands are specified, or if
+a file operand is
+.Fl ,
+the standard input is used.
+.Pp
+A field is
+defined as a minimal sequence of characters followed by a
+field separator or a newline character.
+By default, the first
+blank space of a sequence of blank spaces acts as the field separator.
+All blank spaces in a sequence of blank spaces are considered
+to be part of the next field; for example, all blank spaces at
+the beginning of a line are considered to be part of the
+first field.
+.Pp
+Fields are specified
+by the
+.Cm \(pl Ns Ar pos1
+and
+.Fl Ar pos2
+arguments.  A missing
+.Cm \(pl Ns Ar pos1
+argument defaults to the beginning of a line.
+A missing
+.Fl Ar pos2
+argument defaults to the end of a line.
+.Pp
+The arguments
+.Cm \(pl Ns Ar pos1
 and
 and
-.I pos2
-each have the form
-.IB m . n\fR,
-optionally followed by one or more of the flags
-.B bdf\&inr,
-where
-.I m
-tells a number of fields to skip from the beginning of the line and
-.I n
-tells a number of characters to skip further.
-If any flags are present they override all the global
-ordering options for this key.  If the
-.B b
-option is in effect
-.I n
-is counted from the first nonblank in the field;
-.B b
-is attached independently to 
-.IR pos2 .
-A missing \&\fB.\fIn\fR means .0; a missing
-.BI \- pos2
-means the end of the line.  Under the
-.BI \-t x
-option, fields are strings separated by
-.IR x ;
-otherwise fields are nonempty nonblank strings separated by blanks.
-.LP
-When there are multiple sort keys, later keys
-are compared only after all earlier keys compare equal.
-Lines that otherwise compare equal are ordered with all bytes significant.
-.LP
-These option arguments are also understood:
-.TP 5
-.B c
-Check that the input file is sorted according to the ordering rules;
-give no output unless the file is out of sort.
-.TP 5
-.B  m
-Merge only, the input files are already sorted.
-.TP 5
-.B  o
-The next argument is the name of an output file
-to use instead of the standard output.
-This file may be the same as one of the inputs.
-.TP 5
-.B T
-The next argument is the name of a directory in which temporary files
-should be made.
-.TP 5
-.B  u
-Suppress all but one in each set of equal lines.
-Ignored bytes and bytes outside keys do not participate in this comparison.
-.SH EXAMPLES
-.LP
-Print in alphabetical order all the unique spellings in a list of words.
-Capitalized words differ from uncapitalized.
-.LP
-.ti +8
-sort \-u +0f +0 list
-.LP
-Print the password file
-.RI ( passwd (5))
-sorted by user id number (the 3rd colon-separated field).
-.LP
-.ti +8
-sort \-t: +2n /etc/passwd
-.LP
-Print the first instance of each month in an already sorted file
-of (month day) entries.
-The options
-.B \-um
-with just one input file make the choice of a
-unique representative from a set of equal lines predictable.
-.LP
-.ti +8
-sort \-um +0 \-1 dates
-.SH FILES
-/usr/tmp/stm*, /tmp/*  first and second tries for
-temporary files
-.SH "SEE ALSO"
-uniq(1),
-comm(1),
-rev(1),
-join(1)
-.SH DIAGNOSTICS
-Comments and exits with nonzero status for various trouble
-conditions and for disorder discovered under option
-.BR \-c .
-.SH BUGS
-Very long lines are silently truncated.
+.Fl Ar pos2
+have the form
+.Em m.n
+followed by one or more of the options
+.Fl b , d , f , i ,
+.Fl n , r .
+A
+.Cm \(pl Ns Ar pos1
+position specified by
+.Em m.n
+is interpreted to
+mean the
+.Em n Ns th
+character in the
+.Em m Ns \(pl1th
+field.
+A missing
+.Em \&.n
+means
+.Ql \&.0 ,
+indicating the first character of the
+.Em m Ns \(pl1th
+field.
+If the
+.Fl b
+option is in effect,
+.Em n
+is counted from the first
+non-blank character in the
+.Em m Ns \(pl1th
+field;
+.Em m Ns \&.0b
+refers to the first
+non-blank character in the
+.Em m Ns \(pl1th
+field.
+.Pp
+A
+.Fl Ar pos2
+position specified by
+.Em m.n
+is interpreted to mean
+the
+.Em n Ns th
+character (including separators) after the last
+character of the
+.Em m Ns th
+field.
+A missing
+.Em \&.n
+means
+.Ql \&.0 ,
+indicating
+the last character of the
+.Em m Ns th
+field.
+If the
+.Fl b
+option
+is in effect,
+.Em n
+is counted from the last leading blank character in
+the
+.Em m Ns \(pl1th
+field;
+.Em m Ns \&.1b
+refers to the first non-blank character in the
+.Em m Ns \(pl1th
+field.
+.Sh FILES
+.Bl -tag -width Pa -compact
+.It Pa /var/tmp/stm*, /tmp/*
+Default temporary directories (in order of search).
+.El
+.Sh SEE ALSO
+.Xr comm 1 ,
+.Xr uniq 1 ,
+.Xr join 1
+.Sh DIAGNOSTICS
+.Sh BUGS
+Lines which are longer than 4096 are discarded and processing continues.
+.Sh HISTORY
+A
+.Nm
+command appeared in
+.At v6 .