linux sort 命令详解
linux 将文本文件内容加以排序命令
功能说明:将文本文件内容加以排序。
语 法:sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
补充说明:sort可针对文本文件的内容,以行为单位来排序。
参 数:
-b 忽略每行前面开始出的空格字符(但是空格仍然会打印出来)。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
+<起始栏位> -<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
--help 显示帮助。
--version 显示版本信息
-k n 表示按照第n个域或字段
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sort的应用举例:
0.基于原文件内容:
[liujisheng@MyPcCentOs6 data]$ more video.txtBoys in Company C:HK:192:2192Alien:HK:119:1982The Hill:KL:63:2972Aliens:HK:532:4892Star wars:HK:301:4102A Few Good Men:KL:445:5851Toy Story:HK:239:3972
1. 保存输出
- o选项保存分类结果,然而也可以使用重定向方法保存。下面例子保存结果到
[liujisheng@MyPcCentOs6 data]$ sort video.txt -o result.txt
[liujisheng@MyPcCentOs6 data]$ sort video.txt > result.txt
[liujisheng@MyPcCentOs6 data]$ more result.txt
A Few Good Men:KL:445:5851
Alien:HK:119:1982
Aliens:HK:532:4892
Boys in Company C:HK:192:2192
Star wars:HK:301:4102
The Hill:KL:63:2972
Toy Story:HK:239:3972
2. 查看文件是否已经分类:
未分类:
[liujisheng@MyPcCentOs6 data]$ sort -c video.txt
sort:video.txt:2:无序: Alien:HK:119:1982
已分类:
[liujisheng@MyPcCentOs6 data]$ sort -c result.txt
[liujisheng@MyPcCentOs6 data]$
3.使用 -t 指域分隔符
这里默认是使用Field 0 排序的结果:
[liujisheng@MyPcCentOs6 data]$ sort -t : video.txt
A Few Good Men:KL:445:5851
Alien:HK:119:1982
Aliens:HK:532:4892
Boys in Company C:HK:192:2192
Star wars:HK:301:4102
The Hill:KL:63:2972
Toy Story:HK:239:3972
4.使用 -r 逆序排列
这里默认是使用Field 0 排序的结果:
[liujisheng@MyPcCentOs6 data]$ sort -t: -r video.txt
Toy Story:HK:239:3972
The Hill:KL:63:2972
Star wars:HK:301:4102
Boys in Company C:HK:192:2192
Aliens:HK:532:4892
Alien:HK:119:1982
A Few Good Men:KL:445:5851
5.使用- u选项去除重复行
[liujisheng@MyPcCentOs6 data]$ more video.txt
Boys in Company C:HK:192:2192
Alien:HK:119:1982
The Hill:KL:63:2972
Aliens:HK:532:4892
Star wars:HK:301:4102
A Few Good Men:KL:445:5851
The Hill:KL:63:2972
Toy Story:HK:239:3972
[liujisheng@MyPcCentOs6 data]$ sort -u video.txt
A Few Good Men:KL:445:5851
Alien:HK:119:1982
Aliens:HK:532:4892
Boys in Company C:HK:192:2192
Star wars:HK:301:4102
The Hill:KL:63:2972
Toy Story:HK:239:3972
[liujisheng@MyPcCentOs6 data]$
6.使用 -k 的sort方法
可以指定 k选项,第1域(分类键)以1开始,按年租金分类的次序:
[liujisheng@MyPcCentOs6 data]$ sort -t: -k 4 video.txt
Alien:HK:119:1982
Star wars:HK:301:4102
Boys in Company C:HK:192:2192
The Hill:KL:63:2972
Toy Story:HK:239:3972
Aliens:HK:532:4892
A Few Good Men:KL:445:5851
先以第 4域,再以第1域分类,命令为-k4 -k1,也可以反过来
[liujisheng@MyPcCentOs6 data]$ sort -t: -r -k4 -k1 video.txt
A Few Good Men:KL:445:5851
Aliens:HK:532:4892
Toy Story:HK:239:3972
The Hill:KL:63:2972
Boys in Company C:HK:192:2192
Star wars:HK:301:4102
Alien:HK:119:1982