Linux命令之sort排序

/ Command / 没有评论 / 761浏览

解释

它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。

参数

-b:忽略每行前面开始出的空格字符;

-c:检查文件是否已经按照顺序排序;

-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;

-f:排序时,将小写字母视为大写字母;

-i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符;

-m:将几个排序号的文件进行合并;

-M:将前面3个字母依照月份的缩写进行排序;

-n:依照数值的大小排序;

-o<输出文件>:将排序后的结果存入制定的文件;

-r:以相反的顺序来排序;

-t<分隔字符>:指定排序时所用的栏位分隔字符;

+<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

-u: 忽略相同行,与uniq相似

常用

-r -n -t -k

以"."为分隔符,取第二列,从小到大排序

root@pa2:~/lijinghua# sort -nk 2 -t"." 999.txt 
AAA:BB:CC
eee:60:5.1
ddd:20:4.2
ccc:50:3.3
fff:22:0.3
eee:40:5.4
bbb:10:2.5
aaa:30:1.6

以":"为分隔符,取第二列的第二个字符进行从小到大排序

root@pa2:~/lijinghua# sort -k 2.2 -t":" 999.txt 
eee:60:5.1
fff:22:0.3
aaa:32:1.6
ddd:23:4.2
bbb:14:2.5
ccc:54:3.3
eee:47:5.4
AAA:BB:CC

-u去重(和uniq功能相似)

root@pa2:~/lijinghua# sort -u 999.txt
aaa:32:1.6
AAA:BB:CC
bbb:14:2.5
ccc:54:3.3      #这行少显示了
ddd:23:4.2
eee:47:5.4
eee:60:5.1
fff:22:0.3
root@pa2:~/lijinghua# cat 999.txt
AAA:BB:CC
aaa:32:1.6
ccc:54:3.3
ccc:54:3.3
ddd:23:4.2
bbb:14:2.5
eee:47:5.4
eee:60:5.1
fff:22:0.3