sort
sort lines of text files
1. sort.1.man
Manpage of SORT
SORT
Section: User Commands (1)Updated: October 2011
Index Return to Main Contents
NAME
sort - sort lines of text filesSYNOPSIS
sort [OPTION]... [FILE]...sort [OPTION]... --files0-from=F
DESCRIPTION
Write sorted concatenation of all FILE(s) to standard output.
Mandatory arguments to long options are mandatory for short options too. Ordering options:
- -b, --ignore-leading-blanks
- ignore leading blanks
- -d, --dictionary-order
- consider only blanks and alphanumeric characters
- -f, --ignore-case
- fold lower case to upper case characters
- -g, --general-numeric-sort
- compare according to general numerical value
- -i, --ignore-nonprinting
- consider only printable characters
- -M, --month-sort
- compare (unknown) < `JAN' < ... < `DEC'
- -h, --human-numeric-sort
- compare human readable numbers (e.g., 2K 1G)
- -n, --numeric-sort
- compare according to string numerical value
- -R, --random-sort
- sort by random hash of keys
- --random-source=FILE
- get random bytes from FILE
- -r, --reverse
- reverse the result of comparisons
- --sort=WORD
- sort according to WORD: general-numeric -g, human-numeric -h, month -M, numeric -n, random -R, version -V
- -V, --version-sort
- natural sort of (version) numbers within text
Other options:
- --batch-size=NMERGE
- merge at most NMERGE inputs at once; for more use temp files
- -c, --check, --check=diagnose-first
- check for sorted input; do not sort
- -C, --check=quiet, --check=silent
- like -c, but do not report first bad line
- --compress-program=PROG
- compress temporaries with PROG; decompress them with PROG -d
- --debug
- annotate the part of the line used to sort, and warn about questionable usage to stderr
- --files0-from=F
- read input from the files specified by NUL-terminated names in file F; If F is - then read names from standard input
- -k, --key=POS1[,POS2]
- start a key at POS1 (origin 1), end it at POS2 (default end of line). See POS syntax below
- -m, --merge
- merge already sorted files; do not sort
- -o, --output=FILE
- write result to FILE instead of standard output
- -s, --stable
- stabilize sort by disabling last-resort comparison
- -S, --buffer-size=SIZE
- use SIZE for main memory buffer
- -t, --field-separator=SEP
- use SEP instead of non-blank to blank transition
- -T, --temporary-directory=DIR
- use DIR for temporaries, not $TMPDIR or /tmp; multiple options specify multiple directories
- --parallel=N
- change the number of sorts run concurrently to N
- -u, --unique
- with -c, check for strict ordering; without -c, output only the first of an equal run
- -z, --zero-terminated
- end lines with 0 byte, not newline
- --help
- display this help and exit
- --version
- output version information and exit
POS is F[.C][OPTS], where F is the field number and C the character position in the field; both are origin 1. If neither -t nor -b is in effect, characters in a field are counted from the beginning of the preceding whitespace. OPTS is one or more single-letter ordering options, which override global ordering options for that key. If no key is given, use the entire line as the key.
SIZE may be followed by the following multiplicative suffixes: % 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.
With no FILE, or when FILE is -, read standard input.
*** WARNING *** The locale specified by the environment affects sort order. Set LC_ALL=C to get the traditional sort order that uses native byte values.
AUTHOR
Written by Mike Haertel and Paul Eggert.REPORTING BUGS
Report sort bugs to bug-coreutils@gnu.orgGNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report sort translation bugs to <http://translationproject.org/team/>
COPYRIGHT
Copyright © 2011 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl>.This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
SEE ALSO
The full documentation for sort is maintained as a Texinfo manual. If the info and sort programs are properly installed at your site, the command- info coreutils aqsort invocationaq
should give you access to the complete manual.
Index
This document was created by man2html using the manual pages.
Time: 17:32:31 GMT, October 23, 2013
2. sort.3.man
Manpage of sort
sort
Section: Perl Programmers Reference Guide (3)Updated: 2001-09-21
Index Return to Main Contents
NAME
sort - perl pragma to control sort() behaviourSYNOPSIS
use sort 'stable'; # guarantee stability
use sort '_quicksort'; # use a quicksort algorithm
use sort '_mergesort'; # use a mergesort algorithm
use sort 'defaults'; # revert to default behavior
no sort 'stable'; # stability not important
use sort '_qsort'; # alias for quicksort
my $current = sort::current(); # identify prevailing algorithm
DESCRIPTION
With the "sort" pragma you can control the behaviour of the builtin "sort()" function.In Perl versions 5.6 and earlier the quicksort algorithm was used to implement "sort()", but in Perl 5.8 a mergesort algorithm was also made available, mainly to guarantee worst case O(N log N) behaviour: the worst case of quicksort is O(N**2). In Perl 5.8 and later, quicksort defends against quadratic behaviour by shuffling large arrays before sorting.
A stable sort means that for records that compare equal, the original input ordering is preserved. Mergesort is stable, quicksort is not. Stability will matter only if elements that compare equal can be distinguished in some other way. That means that simple numerical and lexical sorts do not profit from stability, since equal elements are indistinguishable. However, with a comparison such as
{ substr($a, 0, 3) cmp substr($b, 0, 3) }
stability might matter because elements that compare equal on the first 3 characters may be distinguished based on subsequent characters. In Perl 5.8 and later, quicksort can be stabilized, but doing so will add overhead, so it should only be done if it matters.
The best algorithm depends on many things. On average, mergesort does fewer comparisons than quicksort, so it may be better when complicated comparison routines are used. Mergesort also takes advantage of pre-existing order, so it would be favored for using "sort()" to merge several sorted arrays. On the other hand, quicksort is often faster for small arrays, and on arrays of a few distinct values, repeated many times. You can force the choice of algorithm with this pragma, but this feels heavy-handed, so the subpragmas beginning with a "_" may not persist beyond Perl 5.8. The default algorithm is mergesort, which will be stable even if you do not explicitly demand it. But the stability of the default sort is a side-effect that could change in later versions. If stability is important, be sure to say so with a
use sort 'stable';
The "no sort" pragma doesn't forbid what follows, it just leaves the choice open. Thus, after
no sort qw(_mergesort stable);
a mergesort, which happens to be stable, will be employed anyway. Note that
no sort "_quicksort"; no sort "_mergesort";
have exactly the same effect, leaving the choice of sort algorithm open.
CAVEATS
This pragma is not lexically scoped: its effect is global to the program it appears in. That means the following will probably not do what you expect, because both pragmas take effect at compile time, before either "sort()" happens.
{ use sort "_quicksort";
print sort::current . "
";
@a = sort @b;
}
{ use sort "stable";
print sort::current . "
";
@c = sort @d;
}
# prints:
# quicksort stable
# quicksort stable
You can achieve the effect you probably wanted by using "eval()" to defer the pragmas until run time. Use the quoted argument form of "eval()", not the BLOCK form, as in
eval { use sort "_quicksort" }; # WRONG
or the effect will still be at compile time. Reset to default options before selecting other subpragmas (in case somebody carelessly left them on) and after sorting, as a courtesy to others.
{ eval 'use sort qw(defaults _quicksort)'; # force quicksort
eval 'no sort "stable"'; # stability not wanted
print sort::current . "
";
@a = sort @b;
eval 'use sort "defaults"'; # clean up, for others
}
{ eval 'use sort qw(defaults stable)'; # force stability
print sort::current . "
";
@c = sort @d;
eval 'use sort "defaults"'; # clean up, for others
}
# prints:
# quicksort
# stable
Scoping for this pragma may change in future versions.
Index
This document was created by man2html using the manual pages.
Time: 17:32:31 GMT, October 23, 2013

