|  | .TH SORT 1 | 
|  | .SH NAME | 
|  | sort \- sort and/or merge files | 
|  | .SH SYNOPSIS | 
|  | .B sort | 
|  | [ | 
|  | .BI -cmuMbdf\&inrwt x | 
|  | ] | 
|  | [ | 
|  | .BI + pos1 | 
|  | [ | 
|  | .BI - pos2 | 
|  | ] ... | 
|  | ] ... | 
|  | [ | 
|  | .B -k | 
|  | .I pos1 | 
|  | [ | 
|  | .I ,pos2 | 
|  | ] | 
|  | ] ... | 
|  | .br | 
|  | \h'0.5in' | 
|  | [ | 
|  | .B -o | 
|  | .I output | 
|  | ] | 
|  | [ | 
|  | .B -T | 
|  | .I dir | 
|  | \&... | 
|  | ] | 
|  | [ | 
|  | .I option | 
|  | \&... | 
|  | ] | 
|  | [ | 
|  | .I file | 
|  | \&... | 
|  | ] | 
|  | .SH DESCRIPTION | 
|  | .I Sort\^ | 
|  | sorts | 
|  | lines of all the | 
|  | .I files | 
|  | together and writes the result on | 
|  | the standard output. | 
|  | If no input files are named, the standard input is sorted. | 
|  | .PP | 
|  | The default sort key is an entire line. | 
|  | Default ordering is | 
|  | lexicographic by runes. | 
|  | The ordering is affected globally by the following options, | 
|  | one or more of which may appear. | 
|  | .TP | 
|  | .B -M | 
|  | Compare as months. | 
|  | The first three | 
|  | non-white space characters | 
|  | of the field | 
|  | are folded | 
|  | to upper case | 
|  | and compared | 
|  | so that | 
|  | .L JAN | 
|  | precedes | 
|  | .LR FEB , | 
|  | etc. | 
|  | Invalid fields | 
|  | compare low to | 
|  | .LR JAN . | 
|  | .TP | 
|  | .B -b | 
|  | Ignore leading white space (spaces and tabs) in field comparisons. | 
|  | .TP | 
|  | .B -d | 
|  | `Phone directory' order: | 
|  | only letters, | 
|  | accented letters, | 
|  | digits and white space | 
|  | are significant in comparisons. | 
|  | .TP | 
|  | .B -f | 
|  | Fold lower case | 
|  | letters onto upper case. | 
|  | Accented characters are folded to their | 
|  | non-accented upper case form. | 
|  | .TP | 
|  | .B -i | 
|  | Ignore characters outside the | 
|  | .SM ASCII | 
|  | range 040-0176 | 
|  | in non-numeric comparisons. | 
|  | .TP | 
|  | .B -w | 
|  | Like | 
|  | .BR -i , | 
|  | but ignore only tabs and spaces. | 
|  | .TP | 
|  | .B -n | 
|  | An initial numeric string, | 
|  | consisting of optional white space, | 
|  | optional plus or minus sign, | 
|  | and zero or more digits with optional decimal point, | 
|  | is sorted by arithmetic value. | 
|  | .TP | 
|  | .B -g | 
|  | Numbers, like | 
|  | .B -n | 
|  | but with optional | 
|  | .BR e -style | 
|  | exponents, are sorted by value. | 
|  | .TP | 
|  | .B -r | 
|  | Reverse the sense of comparisons. | 
|  | .TP | 
|  | .BI -t x\^ | 
|  | `Tab character' separating fields is | 
|  | .IR x . | 
|  | .PP | 
|  | The notation | 
|  | .BI + "pos1\| " - pos2\^ | 
|  | restricts a sort key to a field beginning at | 
|  | .I pos1\^ | 
|  | and ending just before | 
|  | .IR pos2 . | 
|  | .I Pos1\^ | 
|  | and | 
|  | .I pos2\^ | 
|  | each have the form | 
|  | .IB m . n\f1, | 
|  | optionally followed by one or more of the flags | 
|  | .BR Mbdfginr , | 
|  | 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. | 
|  | A missing | 
|  | .BI \&. n\^ | 
|  | means | 
|  | .BR \&.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 | 
|  | non-empty strings separated by white space. | 
|  | White space before a field | 
|  | is part of the field, except under option | 
|  | .BR -b . | 
|  | A | 
|  | .B b | 
|  | flag may be attached independently to | 
|  | .IR pos1 | 
|  | and | 
|  | .IR pos2. | 
|  | .PP | 
|  | The notation | 
|  | .B -k | 
|  | .IR pos1 [, pos2 ] | 
|  | is how POSIX | 
|  | .I sort | 
|  | defines fields: | 
|  | .I pos1 | 
|  | and | 
|  | .I pos2 | 
|  | have the same format but different meanings. | 
|  | The value of | 
|  | .I  m\^ | 
|  | is origin 1 instead of origin 0 | 
|  | and a missing | 
|  | .BI \&. n\^ | 
|  | in | 
|  | .I pos2 | 
|  | is the end of the field. | 
|  | .PP | 
|  | 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. | 
|  | .PP | 
|  | These option arguments are also understood: | 
|  | .TP \w'\fL-z\fIrecsize\fLXX'u | 
|  | .B -c | 
|  | Check that the single input file is sorted according to the ordering rules; | 
|  | give no output unless the file is out of sort. | 
|  | .TP | 
|  | .B -m | 
|  | Merge; assume the input files are already sorted. | 
|  | .TP | 
|  | .B -u | 
|  | Suppress all but one in each | 
|  | set of equal lines. | 
|  | Ignored bytes | 
|  | and bytes outside keys | 
|  | do not participate in | 
|  | this comparison. | 
|  | .TP | 
|  | .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 | 
|  | .BI -T dir | 
|  | Put temporary files in | 
|  | .I dir | 
|  | rather than in | 
|  | .BR /var/tmp . | 
|  | .ne 4 | 
|  | .SH EXAMPLES | 
|  | .TP | 
|  | .L sort -u +0f +0 list | 
|  | Print in alphabetical order all the unique spellings | 
|  | in a list of words | 
|  | where capitalized words differ from uncapitalized. | 
|  | .TP | 
|  | .L sort -t: +1 /adm/users | 
|  | Print the users file | 
|  | sorted by user name | 
|  | (the second colon-separated field). | 
|  | .TP | 
|  | .L sort -umM dates | 
|  | Print the first instance of each month in an already sorted file. | 
|  | Options | 
|  | .B -um | 
|  | with just one input file make the choice of a | 
|  | unique representative from a set of equal lines predictable. | 
|  | .TP | 
|  | .L | 
|  | grep -n '^' input | sort -t: +1f +0n | sed 's/[0-9]*://' | 
|  | A stable sort: input lines that compare equal will | 
|  | come out in their original order. | 
|  | .SH FILES | 
|  | .BI /var/tmp/sort. <pid>.<ordinal> | 
|  | .SH SOURCE | 
|  | .B \*9/src/cmd/sort.c | 
|  | .SH SEE ALSO | 
|  | .IR uniq (1), | 
|  | .IR look (1) | 
|  | .SH DIAGNOSTICS | 
|  | .I Sort | 
|  | comments and exits with non-null status for various trouble | 
|  | conditions and for disorder discovered under option | 
|  | .BR -c . | 
|  | .SH BUGS | 
|  | An external null character can be confused | 
|  | with an internally generated end-of-field character. | 
|  | The result can make a sub-field not sort | 
|  | less than a longer field. | 
|  | .PP | 
|  | Some of the options, e.g. | 
|  | .B -i | 
|  | and | 
|  | .BR -M , | 
|  | are hopelessly provincial. |