|SORT(1)||General Commands Manual||SORT(1)|
sortutility sorts text and binary files by lines. A line is a record separated from the subsequent record by a newline (default) or NUL ´\0´ character (
-zoption). A record can contain any printable or unprintable characters. Comparisons are based on one or more sort keys extracted from each line of input, and are performed lexicographically, according to the current locale's collating rules and the specified command-line options that can tune the actual sorting behavior. By default, if keys are not given,
sortuses entire lines for comparison.
If no file is specified, or if file is ‘-’, the standard input is used.
The options are as follows:
-C, but additionally write a message to stderr if the input file is not sorted.
sortmay use up to about 90% of available memory. If the input is too big to fit into the memory buffer, temporary files are used.
TMPDIRor /tmp if
TMPDIRis not defined.
sortalso checks that there are no lines with duplicate keys.
The following options override the default ordering rules. If
ordering options appear before the first
they apply globally to all sort keys. When attached to a specific key (see
-k), the ordering options override all global
ordering options for that key. Note that the ordering options intended to
apply globally should not appear after
-k or results
may be unexpected.
-n, this option handles general floating points. It has a more permissive format than that allowed by
-nbut it has a significant performance drawback.
-random-source. If multiple sort fields are specified, the same random hash function is used for all of them.
$ ls sort* | sort -V sort-1.022.tgz sort-1.23.tgz sort-1.23.1.tgz sort-1.024.tgz sort-1.024.003. sort-1.024.003.tgz sort-1.024.07.tgz sort-1.024.009.tgz
The treatment of field separators can be altered using these options:
-bis specified before the first
-koption, it applies globally to all key specifications. Otherwise,
-bcan be attached independently to each field argument of the key specifications. Note that
-bshould not appear after
-k, and that it has no effect unless key fields are specified.
-koption may be specified multiple times, in which case subsequent keys are compared after earlier keys compare equal. The
-koption replaces the obsolete options
-pos2, but the old notation is also supported.
-tis not specified, the default field separator is a sequence of blank-space characters, and consecutive blank spaces do not delimit an empty field; further, the initial blank space is considered part of a field when determining key offsets. To use NUL as field separator, use
sortat once. This option affects behavior when having many input files or using temporary files. The minimum value is 2. The default value is 16.
-doption, it must decompress standard input to standard output. If program fails,
sortwill exit with an error. The compress(1) and gzip(1) utilities meet these requirements.
A field is defined as a maximal sequence of characters other than
the field separator and record separator (newline by default). Initial blank
spaces are included in the field unless
-b has been
specified; the first blank space of a sequence of blank spaces acts as the
field separator and is included in the field (unless
-t is specified). For example, by default all blank
spaces at the beginning of a line are considered to be part of the first
Fields are specified by the
field1[,field2] option. If
field2 is missing, the end of the key defaults to the
end of the line.
The arguments field1 and
field2 have the form m.n
(m,n > 0) and can be followed by one or more of the
r, which correspond to
the options discussed above. When
b is specified it
applies only to field1 or field2
where it is specified while the rest of the modifiers apply to the whole key
field regardless if they are specified only with
field1 or field2 or both. A
field1 position specified by m.n is
interpreted as the nth character from the beginning of the
mth field. A missing .n in
.1’, indicating the first character
of the mth field; if the
is in effect, n is counted from the first non-blank
character in the mth field; m.1b refers
to the first non-blank character in the mth field.
1.n refers to the
nth character from the beginning of the line; if
n is greater than the length of the line, the field is
taken to be empty.
nth positions are always counted from the field beginning, even if the field is shorter than the number of specified positions. Thus, the key can really start from a position in a subsequent field.
A field2 position specified by
m.n is interpreted as the nth character
(including separators) from the beginning of the mth
field. A missing .n indicates the last character of the
mth field; m = 0 designates the end of a
line. Thus the option
v.x,w.y is synonymous with the obsolete option
y is omitted,
v.x,w is synonymous with
-w.0. The obsolete
-pos2 option is still
supported, except for
which has no
-twill not override the locale numeric symbols, that is, thousand separators and decimal separators. By default, if we specify
-twith the same symbol as the thousand separator or decimal point, the symbol will be treated as the field separator. Older behavior was less definite: the symbol was treated as both field separator and numeric separator, simultaneously. This environment variable enables the old behavior.
TMPDIRmay be overridden by the
sortutility exits with one of the following values:
-c, the input file already met the sorting criteria.
sortutility is compliant with the IEEE Std 1003.1-2008 (“POSIX.1”) specification.
The flags [
-gHhiMRSsTVz] are extensions to
All long options are extensions to the specification. Some are
provided for compatibility with GNU
sort, others are
specific to this implementation.
Some implementations of
sort honor the
-b option even when no key fields are specified.
This implementation follows historic practice and IEEE Std
1003.1-2008 (“POSIX.1”) in only honoring
-b when it precedes a key field.
The historic practice of allowing the
option to appear after the file is supported for
compatibility with older versions of
The historic key notations
-pos2 are supported for
compatibility with older versions of
sort but their
use is highly discouraged.
sortcommand appeared in Version 3 AT&T UNIX. Gabor Kovesdan <gabor@FreeBSD.org>
sorthas no limits on input line length (other than imposed by available memory) or any restrictions on bytes allowed within lines.
The performance depends highly on locale settings, efficient
choice of sort keys and key complexity. The fastest sort is with the C
locale, on whole lines, with option
-s. In general,
the C locale is the fastest, followed by single-byte locales with multi-byte
locales being the slowest. The correct collation order respected in all
cases. For the key specification, the simpler to process the lines the
faster the search will be.
When sorting by arithmetic value, using
results in much better performance than
-g so its
use is encouraged whenever possible.
|June 10, 2017||OpenBSD-current|