1993-08-02 21:38:43 +04:00
|
|
|
.\" $Id: sort.1,v 1.2 1993/08/02 17:48:19 mycroft Exp $ -*- nroff -*-
|
|
|
|
.TH SORT 1
|
1993-03-21 12:45:37 +03:00
|
|
|
.SH NAME
|
|
|
|
sort \- sort lines of text files
|
|
|
|
.SH SYNOPSIS
|
|
|
|
.B sort
|
|
|
|
[\-cmus] [\-t separator] [\-o output-file] [\-bdfiMnr] [+POS1 [\-POS2]]
|
|
|
|
[\-k POS1[,POS2]] [file...]
|
|
|
|
.SH DESCRIPTION
|
|
|
|
This manual page
|
|
|
|
documents the GNU version of
|
|
|
|
.BR sort .
|
|
|
|
.B sort
|
|
|
|
sorts, merges, or compares all the lines from the given files, or the standard
|
|
|
|
input if no files are given. A file name of `-' means standard input.
|
|
|
|
By default,
|
|
|
|
.B sort
|
|
|
|
writes the results to the standard output.
|
|
|
|
.PP
|
|
|
|
.B sort
|
|
|
|
has three modes of operation: sort (the default), merge, and check for
|
|
|
|
sortedness. The following options change the operation mode:
|
|
|
|
.TP
|
|
|
|
.I \-c
|
|
|
|
Check whether the given files are already sorted: if they are not all
|
|
|
|
sorted, print an error message and exit with a status of 1.
|
|
|
|
.TP
|
|
|
|
.I \-m
|
|
|
|
Merge the given files by sorting them as a group. Each input file
|
|
|
|
should already be individually sorted. It always works to sort
|
|
|
|
instead of merge; merging is provided because it is faster, in the
|
|
|
|
case where it works.
|
|
|
|
.PP
|
|
|
|
A pair of lines is compared as follows:
|
|
|
|
if any key fields have been specified,
|
|
|
|
.B sort
|
|
|
|
compares each pair of fields, in the order specified on the command
|
|
|
|
line, according to the associated ordering options, until a difference
|
|
|
|
is found or no fields are left.
|
|
|
|
.PP
|
|
|
|
If any of the global options
|
|
|
|
.I Mbdfinr
|
|
|
|
are given but no key fields are
|
|
|
|
specified,
|
|
|
|
.B sort
|
|
|
|
compares the entire lines according to the global options.
|
|
|
|
.PP
|
|
|
|
Finally, as a last resort when all keys compare equal
|
|
|
|
(or if no ordering options were specified at all),
|
|
|
|
.B sort
|
|
|
|
compares the lines byte by byte in machine collating sequence. The
|
|
|
|
.I \-s
|
|
|
|
option disables this last resort comparison, producing a stable sort.
|
|
|
|
.PP
|
|
|
|
GNU
|
|
|
|
.B sort
|
|
|
|
has no limits on input line length or restrictions on bytes allowed
|
|
|
|
within lines. In addition, if the final byte of an input file is not
|
|
|
|
a newline, GNU
|
|
|
|
.B sort
|
|
|
|
silently supplies one. In some cases, such as exactly what the
|
|
|
|
.I \-b
|
|
|
|
and
|
|
|
|
.I \-f
|
|
|
|
options do, BSD and System V
|
|
|
|
.B sort
|
|
|
|
programs produce different output; GNU
|
|
|
|
.B sort
|
|
|
|
follows the POSIX behavior, which is usually like the System V behavior.
|
|
|
|
.PP
|
|
|
|
If the environment variable TMPDIR is set,
|
|
|
|
.B sort
|
|
|
|
uses it as the directory in which to put temporary files instead of
|
|
|
|
the default, /tmp.
|
|
|
|
.PP
|
|
|
|
The following options affect the ordering of output lines. They may
|
|
|
|
be specified globally or as part of a specific key field. If no key
|
|
|
|
fields are specified, global options apply to comparison of entire
|
|
|
|
lines; otherwise the global options are inherited by key fields that
|
|
|
|
do not specify any special options of their own.
|
|
|
|
.TP
|
|
|
|
.I \-b
|
|
|
|
Ignore leading blanks when finding sort keys in each line.
|
|
|
|
.TP
|
|
|
|
.I \-d
|
|
|
|
Sort in `dictionary order': ignore all characters except letters,
|
|
|
|
digits and blanks when sorting.
|
|
|
|
.TP
|
|
|
|
.I \-f
|
|
|
|
Fold lower case characters into the equivalent upper case characters
|
|
|
|
when sorting so that, for example, `b' is sorted the same way `B' is.
|
|
|
|
.TP
|
|
|
|
.I \-i
|
|
|
|
Ignore characters outside the ASCII range 040-0176 (inclusive) when sorting.
|
|
|
|
.TP
|
|
|
|
.I \-M
|
|
|
|
An initial string, consisting of any amount of white space, followed
|
|
|
|
by three letters abbreviating a month name, is folded to lower case
|
|
|
|
and compared in the order `jan' < `feb' < ... < `dec.' Invalid names
|
|
|
|
compare low to valid names. This option implies
|
|
|
|
.IR \-b .
|
|
|
|
.TP
|
|
|
|
.I \-n
|
|
|
|
Compare according to arithmetic value an initial numeric string
|
|
|
|
consisting of optional white space, an optional \- sign, and zero or
|
|
|
|
more digits, optionally followed by a decimal point and zero or more
|
|
|
|
digits. This option implies
|
|
|
|
.IR \-b .
|
|
|
|
.TP
|
|
|
|
.I \-r
|
|
|
|
Reverse the result of comparison, so that lines with greater key
|
|
|
|
values appear earlier in the output instead of later.
|
|
|
|
.PP
|
|
|
|
Other options are:
|
|
|
|
.TP
|
|
|
|
.I "\-o output-file"
|
|
|
|
Write output to
|
|
|
|
.I output-file
|
|
|
|
instead of to the standard output. If
|
|
|
|
.I output-file
|
|
|
|
is one of the input files,
|
|
|
|
.B sort
|
|
|
|
copies it to a temporary file before sorting and writing the output to
|
|
|
|
.IR output-file .
|
|
|
|
.TP
|
|
|
|
.I "\-t separator"
|
|
|
|
Use character
|
|
|
|
.I separator
|
|
|
|
as the field separator when finding the sort keys in each line. By
|
|
|
|
default, fields are separated by the empty string between a
|
|
|
|
non-whitespace character and a whitespace character. That is to say,
|
|
|
|
given the input line ` foo bar',
|
|
|
|
.B sort
|
|
|
|
breaks it into fields ` foo' and ` bar'. The field separator is not
|
|
|
|
considered to be part of either the field preceding or the field
|
|
|
|
following it.
|
|
|
|
.TP
|
|
|
|
.I \-u
|
|
|
|
For the default case or the
|
|
|
|
.I \-m
|
|
|
|
option, only output the first of a sequence of lines that compare
|
|
|
|
equal. For the
|
|
|
|
.I \-c
|
|
|
|
option, check that no pair of consecutive lines compares equal.
|
|
|
|
.TP
|
|
|
|
.I "+POS1 [\-POS2]"
|
|
|
|
Specify a field within each line to use as a sorting key. The field
|
|
|
|
consists of the portion of the line starting at POS1 and up to (but
|
|
|
|
not including) POS2 (or to the end of the line if POS2 is not given).
|
|
|
|
The fields and character positions are numbered starting with 0.
|
|
|
|
.TP
|
|
|
|
.I "\-k POS1[,POS2]"
|
|
|
|
An alternate syntax for specifying sorting keys.
|
|
|
|
The fields and character positions are numbered starting with 1.
|
|
|
|
.PP
|
|
|
|
A position has the form \fIf\fP.\fIc\fP, where \fIf\fP is the number
|
|
|
|
of the field to use and \fIc\fP is the number of the first character
|
|
|
|
from the beginning of the field (for \fI+pos\fP) or from the end of
|
|
|
|
the previous field (for \fI\-pos\fP). The .\fIc\fP part of a position
|
|
|
|
may be omitted in which case it is taken to be the first character in
|
|
|
|
the field. If the
|
|
|
|
.I \-b
|
|
|
|
option has been given, the .\fIc\fP part of a field specification is
|
|
|
|
counted from the first nonblank character of the field (for
|
|
|
|
\fI+pos\fP) or from the first nonblank character following the
|
|
|
|
previous field (for \fI\-pos\fP).
|
|
|
|
.PP
|
|
|
|
A \fI+pos\fP or \fI-pos\fP argument may also have any of the option
|
|
|
|
letters
|
|
|
|
.I Mbdfinr
|
|
|
|
appended to it, in which case the global ordering options are not used
|
|
|
|
for that particular field. The
|
|
|
|
.I \-b
|
|
|
|
option may be independently attached to either or both of the
|
|
|
|
\fI+pos\fP and \fI\-pos\fP parts of a field specification, and if it
|
|
|
|
is inherited from the global options it will be attached to both.
|
|
|
|
If a
|
|
|
|
.I \-n
|
|
|
|
or
|
|
|
|
.I \-M
|
|
|
|
option is used, thus implying a
|
|
|
|
.I \-b
|
|
|
|
option, the
|
|
|
|
.I \-b
|
|
|
|
option is taken to apply to both the \fI+pos\fP and the \fI\-pos\fP
|
|
|
|
parts of a key specification. Keys may span multiple fields.
|