Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ sort(1) — sys5 — Apollo Domain/OS SR10.3.5

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

comm(1)

join(1)

uniq(1)

chrtbl(1M)

ctime(3C)

ctype(3C)

cftime(4)

environ(5)

SORT(1)                              SysV                              SORT(1)



NAME
     sort - sort and/or merge files

SYNOPSIS
     sort [-cmu] [-ooutput] [-ykmem] [-zrecsz] [-dfiMnr] [-btx] [+pos1
     [-pos2]] [files]

DESCRIPTION
     sort sorts lines of all the named files together and writes the result on
     the standard output.  The standard input is read if - is used as a file
     name or no input files are named.

     Comparisons are based on one or more sort keys extracted from each line
     of input.  By default, there is one sort key, the entire input line, and
     ordering is lexicographic by bytes in machine collating sequence.

OPTIONS
     Options that alter default behavior:

     -c        Checks that the input file is sorted according to the ordering
               rules; gives no output unless the file is out of sort.

     -m        Merges only, the input files are already sorted.

     -u        Unique: suppresses all but one in each set of lines having
               equal keys.

     -ooutput  The argument given 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.  There may be optional blanks between -o and
               output.

     -ykmem    The amount of main memory used by the sort has a large impact
               on its performance.  Sorting a small file in a large amount of
               memory is a waste.  If this option is omitted, sort begins
               using a system default memory size, and continues to use more
               space as needed.  If this option is presented with a value,
               kmem, sort will start using that number of kilobytes of memory,
               unless the administrative minimum or maximum is violated, in
               which case the corresponding extremum will be used.  Thus, -y0
               is guaranteed to start with minimum memory.  By convention, -y
               (with no argument) starts with maximum memory.

     -zrecsz   The size of the longest line read is recorded in the sort phase
               so buffers can be allocated during the merge phase.  If the
               sort phase is omitted via the -c or -m options, a popular
               system default size will be used.  Lines longer than the buffer
               size will cause sort to terminate abnormally.  Supplying the
               actual number of bytes in the longest line to be merged (or
               some larger value) will prevent abnormal termination.

     Options that override default ordering rules:

     -d        "Dictionary" order: only letters, digits and blanks (spaces and
               tabs) are significant in comparisons.

     -f        Folds lower case letters into upper case.

     -i        Ignores characters outside the ASCII range 040-0176 in non-
               numeric comparisons.

     -M        Compares as months.  The first three non-blank characters of
               the field are folded to upper case and compared so that "JAN" <
               "FEB" < ... < "DEC".  Invalid fields compare low to "JAN".  The
               -M option implies the -b option (see below).

     -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.  The -n option
               implies the -b option (see below).  Note that the -b option is
               only effective when restricted sort key specifications are in
               effect.

     -r        Reverses the sense of comparisons.

     Options that alter the treatment of field separators:

     -b        Ignores leading blanks when determining the starting and ending
               positions of a restricted sort key.  If the -b option is
               specified before the first +pos1 argument, it will be applied
               to all +pos1 arguments.  Otherwise, the b flag may be attached
               independently to each +pos1 or -pos2 argument (see below).

     -tx       Uses x as the field separator character; x is not considered to
               be part of a field (although it may be included in a sort key).
               Each occurrence of x is significant (for example, xx delimits
               an empty field).

     When ordering options appear before restricted sort key specifications,
     the requested ordering rules are applied globally to all sort keys.  When
     attached to a specific sort key (described below), the specified ordering
     options override all global ordering options for that key.

     The notation +pos1 -pos2 restricts a sort key to one beginning at pos1
     and ending just before pos2.  The characters at position pos1 and just
     before pos2 are included in the sort key (provided that pos2 does not
     precede pos1).  A missing -pos2 means the end of the line.

     Specifying pos1 and pos2 involves the notion of a field, a minimal
     sequence of characters followed by a field separator or a new-line.  By
     default, the first blank (space or tab) of a sequence of blanks acts as
     the field separator.  All blanks in a sequence of blanks are considered
     to be part of the next field; for example, all blanks at the beginning of
     a line are considered to be part of the first field.

     Pos1 and pos2 each have the form m.n optionally followed by one or more
     of the flags bdfinr.  A starting position specified by +m.n is
     interpreted to mean the n+1st character in the m+1st field.  A missing .n
     means .0, indicating the first character of the m+1st field.  If the b
     flag is in effect n is counted from the first non-blank in the m+1st
     field; +m.0b refers to the first non-blank character in the m+1st field.

     A last position specified by -m.n is interpreted to mean the nth
     character (including separators) after the last character of the m th
     field.  A missing .n means .0, indicating the last character of the mth
     field.  If the b flag is in effect n is counted from the last leading
     blank in the m+1st field; -m.1b refers to the first non-blank in the
     m+1st field.

     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.

EXAMPLES
     Sort the contents of infile with the second field as the sort key:

          sort +1 -2 infile
     Sort, in reverse order, the contents of infile1 and infile2, placing the
     output in outfile and using the first character of the second field as
     the sort key:

          sort -r -o outfile +1.0 -1.2 infile1 infile2

     Sort, in reverse order, the contents of infile1 and infile2 using the
     first non-blank character of the second field as the sort key:

          sort -r +1.0b -1.1b infile1 infile2

     Print the password file (passwd(4)) sorted by the numeric user ID (the
     third colon-separated field):

          sort -t: +2n -3 /etc/passwd

     Print the lines of the already sorted file infile, suppressing all but
     the first occurrence of lines having the same third field (the options
     -um with just one input file make the choice of a unique representative
     from a set of equal lines predictable):

          sort -um +2 -3 infile

WARNINGS
     Comments and exits with non-zero status for various trouble conditions
     (for example, when input lines are too long), and for disorder discovered
     under the -c option.  When the last line of an input file is missing a
     new-line character, sort appends one, prints a warning message, and
     continues.

     sort does not guarantee preservation of relative line ordering on equal
     keys.

NOTES
     To set the date format, see ctime(3C), cftime(4), and environ(5).  To set
     character classes, see chrtbl(1M), ctype(3C), and environ(5).

FILES
     /usr/tmp/stm???
     /usr/lib/cftime/*
     /lib/chrclass/*

SEE ALSO
     comm(1), join(1), uniq(1), chrtbl(1M), ctime(3C), ctype(3C), cftime(4),
     environ(5).

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026