Linux基础之sort命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础之sort命令相关的知识,希望对你有一定的参考价值。

sort命令用于将文本文件内容加以排序
sort可以针对文本文件内容,以行为单位来排序。

参数:
-b:忽略每行前面开始出现的空格字符
-c:检查文件是否已经按照顺序排序
-d:排序时,处理英文字母、数字及空格字符外,忽略其它字符。
-f:排序时,将小写字母视为大写字母
-i:排序时,除了040至176之间的ASCII字符外
-m:将几个排序好的文件进行合并
-M:将前面三个字母依照月份的缩写进行排序
-n:依照数值大小进行排序
-o<输出文件>:将排序后的结果存入指定文件
-r:以相反的顺序来排序
-t<分割字符>:指定排序时所用的分隔符
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位
--help 显示帮助。

实例:
1.以ASCII顺序排序文件test1
sort test1

2.忽略文件相同行

sort -u test1
或
uniq test1

3.sort -n -r -k -t的使用
先查看一个文件sort.txt

cat sort.txt
AAA:BB:CC
aaa:30:1.6
ccc:50:3.3
ddd:20:4.2
bbb:10:2.5
eee:40:5.4
eee:60:5.1

#将BB列按照数字从小到大顺序排列:

sort -nk 2 -t: sort.txt
AAA:BB:CC
bbb:10:2.5
ddd:20:4.2
aaa:30:1.6
eee:40:5.4
ccc:50:3.3
eee:60:5.1

#将CC列数字从大到小顺序排列:

sort -nrk 3 -t: sort.txt
eee:40:5.4
eee:60:5.1
ddd:20:4.2
ccc:50:3.3
bbb:10:2.5
aaa:30:1.6
AAA:BB:CC

-n是按照数字大小排序,-r是以相反顺序,-k是指定需要爱排序的栏位,-t指定栏位分隔符为冒号

-k选项的具体语法格式:

-k选项的语法格式:


FStart.CStart Modifie,FEnd.CEnd Modifier
-------Start--------,-------End--------
 FStart.CStart 选项  ,  FEnd.CEnd 选项

这个语法格式可以被其中的逗号,分为两大部分,Start部分和End部分。Start部分也由三部分组成,其中的Modifier部分就是我们之前说过的类似n和r的选项部分。我们重点说说Start部分的FStart和C.Start。C.Start也是可以省略的,省略的话就表示从本域的开头部分开始。FStart.CStart,其中FStart就是表示使用的域,而CStart则表示在FStart域中从第几个字符开始算“排序首字符”。同理,在End部分中,你可以设定FEnd.CEnd,如果你省略.CEnd,则表示结尾到“域尾”,即本域的最后一个字符。或者,如果你将CEnd设定为0(零),也是表示结尾到“域尾”。

1.从公司英文名称的第二个字母开始进行排序:

sort -t ‘ ‘ -k 1.2 book.txt  ##以空格为分隔符
baidu 100 5000
sohu 100 4500
google 110 5000
guge 50 3000

使用k 1.2表示第一个域的第二个字符开始到本域的最后一个字符为止的字符串进行排序。sohu与google第二个字符相同,所以按照第三个字符来对这两字符谁前谁后排序。

2.只针对公司英文名称的第二个字母进行排序,如果相同的按照员工工资进行降序排序:
sort -t ‘ ‘ -k 1.2,1.2 -nrk 3,3 book.txt

由于只针对1.2进行排序,所以这里用1.2,1.2来表示

以上是关于Linux基础之sort命令的主要内容,如果未能解决你的问题,请参考以下文章

Linux基础:sort命令总结

linux命令之----sort命令用于将文本文件内容加以排序

Linux命令之排序sort

Linux基础命令sort

Linux 排序命令之 sort, wc, uniq

linux基础命令:sort,uniq,cut,wc