Linux sort 排序命令
help
$ sort --help
Usage: sort [OPTION]... [FILE]...
or: sort [OPTION]... --files0-from=F
Write sorted concatenation of all FILE(s) to standard output.
With no FILE, or when FILE is -, read standard input.
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 shuffle, but group identical keys. See shuf(1)
--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=KEYDEF sort via a key; KEYDEF gives location and type
-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 line delimiter is NUL, not newline
--help display this help and exit
--version output version information and exit
说明:
-t, --field-separator=分隔符
使用指定的分隔符代替非空格到空格的转换-o
输出到另一个文件-r
倒序排列-n
数字排序-k
对特定列进行排序,内容 abc 100
,对第二列排序 sort -k 2n
,n 表示数字-c
检查是否已经排序-u
去掉文件中重复的行
示例
版本排序
按照版本排序 https://www.gnu.org/software/coreutils/manual/html_node/Version-sort-overview.html
$ cat test.txt
1.1.2.1
1.0.0.1
1.3.3.2
1.0.12.2
1.0.12.1
$ sort -V test.txt
1.0.0.1
1.0.12.1
1.0.12.2
1.1.2.1
1.3.3.2
$ sort --version-sort test.txt
1.0.0.1
1.0.12.1
1.0.12.2
1.1.2.1
1.3.3.2
$ sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n test.txt
1.0.0.1
1.0.12.1
1.0.12.2
1.1.2.1
1.3.3.2
多行排序
$ cat test.txt
x,10,400
y,9,500
a,10,500
b,9,400
z,2,600
$ sort -t ',' -k 3r -k 2n test.txt
z,2,600
y,9,500
a,10,500
b,9,400
x,10,400
文件行去重
sort 1.md | uniq -d