Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

comm(1)

join(1)

uniq(1)





   sort(1)                    (Essential Utilities)                    sort(1)


   NAME
         sort - sort and/or merge files

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

   DESCRIPTION
         The sort command 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.

         The following options alter the default behavior:

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

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

         -u   Unique: suppress 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 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


   7/91                                                                 Page 1









   sort(1)                    (Essential Utilities)                    sort(1)


              value) will prevent abnormal termination.

         The following options override the default ordering rules.

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

         -f   Fold lower-case letters into upper case.

         -i   Ignore non-printable characters.

         -M   Compare as months.  The first three non-blank characters of the
              field are folded to upper case and compared.  For example, in
              English the sorting order is "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   Reverse the sense of comparisons.

         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.
         The treatment of field separators can be altered using the options:

         -b   Ignore 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).



   Page 2                                                                 7/91









   sort(1)                    (Essential Utilities)                    sort(1)


         -tx  Use 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).

         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):




   7/91                                                                 Page 3









   sort(1)                    (Essential Utilities)                    sort(1)


               sort -um +2 -3 infile

   FILES
         /var/tmp/stm???

   SEE ALSO
         comm(1), join(1), uniq(1).

   NOTES
         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.




































   Page 4                                                                 7/91





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