sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式:

  sort [-bcfMnrtk][源文件][-o 输出文件]

补充说明:sort可针对文本文件的内容,以行为单位来排序。

参  数:

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

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

  -f   排序时,忽略大小写字母。

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

  -n   依照数值的大小排序。

  -o<输出文件>   将排序后的结果存入指定的文件。

  -r   以相反的顺序来排序。

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

  -k  选择以哪个区间进行排序。

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

下面通过几个例子来讲述Sort的使用。



(1)sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

[rocrocket@rocrocket programming]$ cat seq.txt

banana

apple

pear

orange

[rocrocket@rocrocket programming]$ sort seq.txt

apple

banana

orange

pear

用户可以保存排序后的文件内容,或把排序后的文件内容输出至打印机。下例中用户把排序后的文件内容保存到名为result的文件中。

$ Sort seq.txt > result

(2)sort的-u选项

它的作用很简单,就是在输出行中去除重复行。

[rocrocket@rocrocket programming]$ cat seq.txt

banana

apple

pear

orange

pear

[rocrocket@rocrocket programming]$ sort seq.txt

apple

banana

orange

pear

pear

[rocrocket@rocrocket programming]$ sort -u seq.txt

apple

banana

orange

pear

pear由于重复被-u选项无情的删除了。

(3)sort的-r选项

sort默认的排序方式是升序,如果想改成降序,就加个-r就搞定了。

[rocrocket@rocrocket programming]$ cat number.txt

1

3

5

2

4

[rocrocket@rocrocket programming]$ sort number.txt

1

2

3

4

5

[rocrocket@rocrocket programming]$ sort -r number.txt

5

4

3

2

1

(5)sort的-o选项

由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename > newfile。

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

[rocrocket@rocrocket programming]$ sort -r number.txt > number.txt

[rocrocket@rocrocket programming]$ cat number.txt

[rocrocket@rocrocket programming]$

看,竟然将number清空了。

就在这个时候,-o选项出现了,它成功的解决了这个问题,让你放心的将结果写入原文件。这或许也是-o比重定向的唯一优势所在。

[rocrocket@rocrocket programming]$ cat number.txt

1

3

5

2

4

[rocrocket@rocrocket programming]$ sort -r number.txt -o number.txt

[rocrocket@rocrocket programming]$ cat number.txt

5

4

3

2

1

(6) sort的-n选项

你有没有遇到过10比2小的情况。我反正遇到过。出现这种情况是由于排序程序将这些数字按字符来排序了,排序程序会先比较1和2,显然1小,所以就将10放在2前面喽。这也是sort的一贯作风。

我们如果想改变这种现状,就要使用-n选项,来告诉sort,“要以数值来排序”!

[rocrocket@rocrocket programming]$ cat number.txt

1

10

19

11

2

5

[rocrocket@rocrocket programming]$ sort number.txt

1

10

11

19

2

5

[rocrocket@rocrocket programming]$ sort -n number.txt

1

2

5

10

11

19

(7) sort的-t选项和-k选项

如果有一个文件的内容是这样:

[rocrocket@rocrocket programming]$ cat facebook.txt

banana:30:5.5

apple:10:2.5

pear:90:2.3

orange:20:3.4

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

[rocrocket@rocrocket programming]$ sort -n -k 2 -t ‘:’ facebook.txt

apple:10:2.5

orange:20:3.4

banana:30:5.5

pear:90:2.3

(8) 其他的sort常用选项

-f会将小写字母都转换为大写字母来进行比较,亦即忽略大小写

-c会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1

-C会检查文件是否已排好序,如果乱序,不输出内容,仅返回1

-M会以月份来排序,比如JAN小于FEB等等

-b会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。

(9)设定tab分隔符

linux下的sort命令可以对文本的某些字段进行排序,而字段之间的分隔符默认是空格,如果想换成别的,则需要加参数-t。

但是对于tab分隔符,还是得稍微注意一下。比如下面的命令:

$sort -t '\t' -k3,3n a.txt >a.sort

sort: multi-character tab `\t'  (出错)

这个不能按照tab分隔符进行字段排序,换成如下两种方式就可以了

1,

$ sort  -t $'\t' -k3,3n a.txt>a.sort

2,

$ sort -t'<ctrl>v<tab>' -k3,3n a.txt>a.sort

<ctrl>v<tab>代表先同时按下Ctrl和v键,然后松开,按下tab键。

linux之sort用法的更多相关文章

  1. (转) linux之sort用法

    sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式: sort [-bcfMnrtk][源文件][-o 输出文件] 补充说明:sort可针对文本文件的内容,以行为单位来排序. 参 数 ...

  2. Linux命令之sort用法

    linux之sort用法   sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式: sort [-bcfMnrtk][源文件][-o 输出文件] 补充说明:sort可针对文本文件的内 ...

  3. [转帖]linux之sed用法

    linux之sed用法 https://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html docker images | awk ' ...

  4. linux日志中查找关键字、前几行、结尾几行,Linux的find用法示例

    linux在日志中查找关键字.前几行.结尾几行,Linux的find用法示例 1.linux在日志中查找关键字.前几行.结尾几行 1.1查看日志 前 n行: 1.2查看日志 尾 n行: 1.3根据 关 ...

  5. Linux echo, sort, sed 等一些命令总结

    linux echo, sort, sed是初学linux shell script 的一些常用的命令.基本上来说,如果能够掌握了这些命令,我们就能写出一些不错的linux脚本.以下是我遇到的以下常用 ...

  6. linux mail命令用法

    在Linux系统下mail命令的测试 1. 最简单的一个例子: mail -s test admin@aispider.com 这条命令的结果是发一封标题为test的空信给后面的邮箱,如果你有mta并 ...

  7. linux expect, spawn用法小记

    linux expect, spawn用法小记_IT民工_百度空间 linux expect, spawn用法小记 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://sys ...

  8. sort用法

    一.sort用法sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出.vim 1.txt 1:datadir=/aaa/zzz:2: ...

  9. Linux的sort命令

     Linux的sort命令 Linux的sort命令就是一种对文件排序的工具,sort命令的功能十分强大,是Shell脚本编程时常使用的文件排序工具. sort命令将输入文件看做由多条记录组成的数据流 ...

随机推荐

  1. Visual Studio编辑类模板的位置

    VS的版本一直在不断更新,每个版本的安装目录都是有一点变化,所以模板文件的位置也是不一样的,下面是从StackOverflow看到的一个大合集,转发记录一下: Extract, edit and re ...

  2. Lua编程

    lua编程大杂烩.博客其他方面也不错.先记录.http://www.cnblogs.com/stephen-liu74/category/360139.html

  3. poj 1952 最长公共子序列计数

    看代码就懂了  不解释  3 1 1 1 1 2 2 2 1 1 1 3  第一个3 和最后一个 3 只需要一个就够了,,, #include<iostream> #include< ...

  4. PS基础教程:[8]蒙版使用实例

    蒙版是PS中我们最常使用的工具,使用蒙版合成图片可以制作出非常绚丽的效果,并且看上去感觉很真,下面就以一个实例为大家分享一下蒙版的基本使用. 方法 1.在PS中打开准备好的素材,这里主要介绍蒙版的使用 ...

  5. bzoj 1925 地精部落

    Written with StackEdit. Description 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 \(N\) 的山脉 \(H ...

  6. 互联网公司面试必问的mysql题目(下)

    这是mysql系列的下篇,上篇文章地址我附在文末. 什么是数据库索引?索引有哪几种类型?什么是最左前缀原则?索引算法有哪些?有什么区别? 索引是对数据库表中一列或多列的值进行排序的一种结构.一个非常恰 ...

  7. BZOJ3507 [Cqoi2014]通配符匹配

    题意 几乎所有操作系统的命令行界面(CLI)中都支持文件名的通配符匹配以方便用户.最常见的通配符有两个,一个是星号("*"),可以匹配0个及以上的任意字符:另一个是问号(" ...

  8. php与JAVA的RSA加密互通

    Java 版本RSA 进行加密解密 在网上查询了好几天,最终找到解决方案,网络上都是通过Cipher.getInstance("RSA"); 而改成Cipher.getInstan ...

  9. cxGrid使用汇总3

    32根据单元的值设置样式   解决:procedure   <aForm>.<aColumn>StylesGetContentStyle(         Sender:   ...

  10. pidstat

    统计系统上的某个进程占用的磁盘读写 pidstat -d   -p   pidNumber  3 -d  表示磁盘设备 -p 指定pid 3 表示每三秒刷新一次结果