Linux自带排序命令:sort
在一些临时性排序需求的时候,使用该命令可以快速的处理。小巧的工具使我们使用非常便捷。
语法:sort [-bcCdfghiRMmnrsuVz] [-k field1[,field2]] [-S memsize] [-T dir] [-t char] [-o output] [file ...]
可选项
1 | -b 忽略每行前面开始出的空格字符。 |
例子
1 | [@huzhibindeMacBook-Pro:tmp]$ cat sort.log |
打印从哪列开始是乱序
1 | [@huzhibindeMacBook-Pro:tmp]$ sort -c sort.log |
指定列排序
默认按照字符排序1
2
3
4
5
6
7
8
9[@huzhibindeMacBook-Pro:tmp]$ sort -k 3 sort.log
b linux 1000 200 5K
e bsd 1000 600 4M
c win7 2000 100 7G
a mac 2000 500 2K
d winxp 4000 300 3G
f SUSE 4000 300 6M
g winxp 500 300 3G
c Debian 600 200 8K
按照数字排序1
2
3
4
5
6
7
8
9[@huzhibindeMacBook-Pro:tmp]$ sort -k 3n sort.log
g winxp 500 300 3G
c Debian 600 200 8K
b linux 1000 200 5K
e bsd 1000 600 4M
a mac 2000 500 2K
c win7 2000 100 7G
d winxp 4000 300 3G
f SUSE 4000 300 6M
-u和uniq的区别
在指定-k
的时候,-u
是会按照指定的列来忽略重复,uniq
是按照整行来去重1
2
3
4
5
6
7
8
9
10
11
12
13
14
15[@huzhibindeMacBook-Pro:tmp]$ sort -k 3n -u sort.log
g winxp 500 300 3G
c Debian 600 200 8K
e bsd 1000 600 4M
a mac 2000 500 2K
d winxp 4000 300 3G
[@huzhibindeMacBook-Pro:tmp]$ sort -k 3n sort.log | uniq
g winxp 500 300 3G
c Debian 600 200 8K
b linux 1000 200 5K
e bsd 1000 600 4M
a mac 2000 500 2K
c win7 2000 100 7G
d winxp 4000 300 3G
f SUSE 4000 300 6M