sort 对文本文件的行进行排序
sort --help
[root@node0 tmp]# sort --help
Usage: sort [OPTION]... [FILE]...
or: sort [OPTION]... --files0-from=F
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在关键字中只考虑[a-zA-Z0-9]字符
-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
--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 设置排序的key ,与-t合用,默认整行比较
(default end of line)
-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
-u, --unique with -c, check for strict ordering; 和-c一起,严格排序
without -c, output only the first of an equal run 没有-c,去除重复行
-z, --zero-terminated end lines with 0 byte, not newline
--help display this help and exit
--version output version information and exit
示例
准备文件
[root@node0 tmp]# cat passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
sort 不加参数,按照整行从前往后,比较ascii,升序
[root@node0 tmp]# sort passwd
10 uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
-t –k 指定分隔符,比较key
[root@node0 tmp]# sort -t ' ' -k 2 passwd
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
8 halt:x:7:0:halt:/sbin:/sbin/halt
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
1 root:x:0:0:root:/root:/bin/bash
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
6 sync:x:5:0:sync:/sbin:/bin/sync
10 uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
-r 反向排序
[root@node0 tmp]# sort -t ' ' -k 2 -r passwd
10 uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
1 root:x:0:0:root:/root:/bin/bash
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
8 halt:x:7:0:halt:/sbin:/sbin/halt
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
2 bin:x:1:1:bin:/bin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
-u 去除重复行
[root@node0 tmp]# sort -t ' ' -k 2 -r -u passwd
10 uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
1 root:x:0:0:root:/root:/bin/bash
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
8 halt:x:7:0:halt:/sbin:/sbin/halt
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
2 bin:x:1:1:bin:/bin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
-n 以数字比较,防止10比1小这种
[root@node0 tmp]# sort -t ' ' -k 1 -n passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin