码迷,mamicode.com
首页 > 系统相关 > 详细

linux命令sort用法

时间:2016-07-08 12:01:00      阅读:294      评论:0      收藏:0      [点我收藏+]

标签:linux sort

linux命令sort用法

sort是在Linux里非常常用的一个命令,管排序的
通过man sort查看sort用法

       -b, --ignore-leading-blanks
              ignore leading blanks

       -d, --dictionary-order
              consider only blanks and alphanumeric characters

       -f, --ignore-case
              fold lower case to upper case characters

       -g, --general-numeric-sort
              compare according to general numerical value

       -i, --ignore-nonprinting
              consider only printable characters

       -M, --month-sort
              compare (unknown) < ‘JAN’ < ... < ‘DEC’

       -h, --human-numeric-sort
              compare human readable numbers (e.g., 2K 1G)

       -n, --numeric-sort
              compare according to string numerical value

       -R, --random-sort
              sort by random hash of keys

       --random-source=FILE
              get random bytes from FILE

       -r, --reverse
              reverse the result of comparisons
1、sort工作原理
sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

[root@s80sit ~]# cat seq.txt 
nana
apple
pear
orange
mageedu

2、 sort -u
作用很简单,就是在输出行中去除重复行。

[root@s80sit ~]# cat seq.txt 
nana
apple
pear
orange
mageedu
apple
[root@s80sit ~]# sort -u seq.txt 
apple
mageedu
nana
orange
pear

apple由于重复被-u选项无情的删除了。
3、sort的-r选项 降序排列
sort默认的排序方式是升序,如果想改成降序,就加个-r就搞定了。

[root@s80sit ~]# cat seq.txt 
nana
apple
pear
orange
mageedu
apple
[root@s80sit ~]# sort seq.txt 
apple
apple
mageedu
nana
orange
pear
[root@s80sit ~]# sort -r seq.txt 
pear
orange
nana
mageedu
apple
apple

4、sort的-o选项
sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename > newfile。

[root@s80sit ~]# sort  seq.txt  > ssssss.txt
[root@s80sit ~]# cat ssssss.txt 
apple
apple
mageedu
nana
orange
pear

但是,如果你想把排序结果输出到原文件中,用重定向可就不行了。

[root@s80sit ~]# sort ssssss.txt  > ssssss.txt 
[root@s80sit ~]# cat ssssss.txt 
[root@s80sit ~]#

ssssss.txt里面的内容被清空了。

[root@s80sit ~]# cat number.txt 
1
3
5
2
4
6
9
7

加-o参数及降序排序后结果为:

[root@s80sit ~]# sort -r number.txt -o number.txt
[root@s80sit ~]# cat number.txt 
9
7
6
5
4
3
2
1

现在试一下内容为字母的而不是数字的看看结果如何?

[root@s80sit ~]# cat seq.txt 
apple
apple
mageedu
nana
orange
pear
[root@s80sit ~]# sort -r seq.txt  -o seq.txt
[root@s80sit ~]# cat seq.txt 
pear
orange
nana
mageedu
apple
apple

结果是对的,证明成功了哦。
5、sort -n 参数
你有没有遇到过10比2小的情况。我反正遇到过。由于排序程序将这些数字按字符来排序了,
排序程序会先比较1和2,显然1小,所以就将10放在2前面喽。这也是sort的一贯作风。
例如:

[root@s80sit ~]# cat test.txt 
10
2
30
4
34
6
1
[root@s80sit ~]# sort test.txt 
1
10
2
30
34
4
6

看到结果了吧?反正我看到了,2比10还排在前面,哈哈。
下面加了-n参数后看看结果如何?

[root@s80sit ~]# sort -n test.txt 
1
2
4
6
10
30
34

ok!!!!!!!!!!!!

6、sort  -t和-k 用法

[root@s80sit ~]# cat dddd.txt 
banana:30:5.5
apple:10:2.5
pear:90:2.3
orange:20:3.4

这个文件有三列,列与列之间用冒号隔开了,第一列表示水果类型,第二列表示水果数量,第三列表示水果价格。
那么我想以水果数量来排序,也就是以第二列来排序,如何利用sort实现?
幸好,sort提供了-t选项,后面可以设定间隔符。指定了间隔符之后,就可以用-k来指定列数了。

[root@s80sit ~]# sort -n -k 2 -t ‘:‘ dddd.txt 
apple:10:2.5
orange:20:3.4
banana:30:5.5
pear:90:2.3
[root@s80sit ~]# sort -n -k 3 -t ‘:‘ dddd.txt 
pear:90:2.3
apple:10:2.5
orange:20:3.4
banana:30:5.5

sort还有好多用法,后续在添加,谢谢关注。





本文出自 “梁小明的博客” 博客,请务必保留此出处http://7038006.blog.51cto.com/7028006/1812529

linux命令sort用法

标签:linux sort

原文地址:http://7038006.blog.51cto.com/7028006/1812529

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!