1.sort命令将输入文件看做有多条记录组成的数据流,记录有可变宽度的字段组成,以换行符作为定界符,sort和awk一样,将记录分成多个域处理,默认域分隔符是空格。

sort   选项  输入文件

 

[root@zhu1 ~]# nl zhu.txt
1  zhang3:qian shan niao feijue 66
2  li4:wan jing ren zong mie 89
3  wang5:du diao han jiangxue 33
[root@zhu1 ~]# sort zhu.txt
li4:wan jing ren zong mie 89
wang5:du diao han jiangxue 33
zhang3:qian shan niao feijue 66

sort命令默认根据第一域对数据记录进行排序,如果第一域相同根据第2域排序,以此类推,默认与分割符为空格

常用的选项有:

-c :测试文件是否已经排序

-k :指定排序的域

 

[root@zhu1 ~]# sort zhu.txt
li4:8 89
wang5:2 33
zhang3:99 66
[root@zhu1 ~]# sort -k2 zhu.txt
wang5:2 33
zhang3:99 66
li4:8 89

 

-m :合并两个已排序的文件

-n :根据数字大小进行排序

 

[root@zhu1 ~]# nl zhu.txt
1  zhang3:99 66
2  li4:8 299
3  wang5:2 33
[root@zhu1 ~]# sort -k2 zhu.txt
li4:8 299
wang5:2 33
zhang3:99 66
[root@zhu1 ~]# sort -k2n zhu.txt
wang5:2 33
zhang3:99 66
li4:8 299

 

-o :将输出重定向到指定文件

-r:将排序结果你想显示

 

[root@zhu1 ~]# sort zhu.txt
li4:8 89
wang5:2 33
zhang3:99 66
[root@zhu1 ~]# sort -r zhu.txt
zhang3:99 66
wang5:2 33
li4:8 89

默认是升序,-r参数表示降序

-t :改变域分隔符

 

[root@zhu1 ~]# sort -k2 zhu.txt
wang5:2 33
zhang3:99 66
li4:8 89
[root@zhu1 ~]# sort -t: -k2 zhu.txt
wang5:2 33
li4:8 89
zhang3:99 66

-t与:号之间没有空格

-k与2之间没有空格

-u :去除结果中重复的行