About sort
Sorts the lines in a text file.
sort command Syntax
sort [OPTION]... [FILE]...
sort command 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.
-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 a help message, and exit.
--version Display 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 a dash (“-“), read from standard input.
Also note that the locale specified by the environment affects sort order; set LC_ALL=C to get the traditional sort order that uses native byte values.
Examples
Sort command sorts the lines of a text file. Following are several practical examples on how to use the sort command based on the following sample text file that has employee information in the format:
employee_name:employee_id:department_name.
$ cat names.txt
Emma Thomas:100:Marketing
Alex Jason:200:Sales
Madison Randy:300:Product Development
Sanjay Gupta:400:Support
Nisha Singh:500:Sales
Sort a text file in ascending order
$ sort names.txt
Alex Jason:200:Sales
Emma Thomas:100:Marketing
Madison Randy:300:Product Development
Nisha Singh:500:Sales
Sanjay Gupta:400:Support
Sort a text file in descending order
$ sort -r names.txt
Sanjay Gupta:400:Support
Nisha Singh:500:Sales
Madison Randy:300:Product Development
Emma Thomas:100:Marketing
Alex Jason:200:Sales
Sort a colon delimited text file on 2nd field (employee_id)
$ sort -t: -k 2 names.txt
Emma Thomas:100:Marketing
Alex Jason:200:Sales
Madison Randy:300:Product Development
Sanjay Gupta:400:Support
Nisha Singh:500:Sales
Sort a tab delimited text file on 3rd field (department_name) and suppress duplicates
$ sort -t: -u -k 3 names.txt
Emma Thomas:100:Marketing
Madison Randy:300:Product Development
Alex Jason:200:Sales
Sanjay Gupta:400:Support
Sort the passwd file by the 3rd field (numeric userid)
$ sort -t: -k 3n /etc/passwd | more
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
Sort /etc/hosts file by ip-address
$ sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.100.101 dev-db.thegeekstuff.com dev-db
192.168.100.102 prod-db.thegeekstuff.com prod-db
192.168.101.20 dev-web.thegeekstuff.com dev-web
192.168.101.21 prod-web.thegeekstuff.com prod-web
Combine sort with other commands
ps –ef | sort : Sort the output of process list
ls -al | sort +4n : List the files in the ascending order of the file-size. i.e sorted by 5th filed and displaying smallest files first.
ls -al | sort +4nr : List the files in the descending order of the file-size. i.e sorted by 5th filed and displaying largest files first.
Reference
http://linux.101hacks.com/linux-commands/sort-command-examples/
http://www.computerhope.com/unix/usort.htm