Linux: sort command

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值