LinuxReviws.org --get your your Linux knowledge
> Linux Reviews > Manual Pages (man) >

sort

sort lines of text files


  1. sort.1.man
  2. sort.3.man


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 files  

SYNOPSIS

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.org
GNU 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

NAME
SYNOPSIS
DESCRIPTION
AUTHOR
REPORTING BUGS
COPYRIGHT
SEE ALSO

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() behaviour  

SYNOPSIS

    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

NAME
SYNOPSIS
DESCRIPTION
CAVEATS

This document was created by man2html using the manual pages.
Time: 17:32:31 GMT, October 23, 2013

ENGLISH - ENGLISH - ja - pl

Meet new people