linux-sort

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

 

 

原文地址:https://www.cnblogs.com/jeancheng/p/13066866.html