资讯专栏INFORMATION COLUMN

【Linux工具篇】排序工具sort

dance / 1865人阅读

摘要:会以月份来排序,比如小于等等依照数值的大小排序。输出文件将排序后的结果存入指定的文件。以相反的顺序来排序。分隔字符指定排序时所用的栏位分隔字符。选择以哪个区间进行排序。

介绍

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

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

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

参数
-b   会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。
-c   会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1。
-C   会检查文件是否已排好序,如果乱序,不输出内容,仅返回1
-u   输出重复行
-f   会将小写字母都转换为大写字母来进行比较,亦即忽略大小写。
-M   会以月份来排序,比如JAN小于FEB等等
-n   依照数值的大小排序。
-o<输出文件>   将排序后的结果存入指定的文件。
-r   以相反的顺序来排序。
-t<分隔字符>   指定排序时所用的栏位分隔字符。
-k  选择以哪个区间进行排序。
实例

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

[root@localhost ~]# cat sort.txt
banana
apple
pear
orange

[root@localhost ~]# sort sort.txt
apple
banana
orange
pear

[root@localhost ~]# sort sort2.txt
12345 #注意是按acii码的升序排列
221
339
349
782
999
去除重复行
[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
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
-n选项,按数字排序
[root@localhost ~]# sort -r sort2.txt
999
782
349
339
221
12345 #默认是按字符排序,由前到后,这里最前面的1最小

[root@localhost ~]# sort -r -n sort2.txt
12345
999
782
349
339
221
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

$ sort -n -t ‘ ‘ -k 3r -k 2 facebook.txt #sort支持这种设定,就是说设定域排序的优先级,先以第2个域进行排序,如果相同,再以第3个域进行排序。(如果你愿意,可以一直这么写下去,设定很多个排序优先级)
baidu 100 5000
google 110 5000
sohu 100 4500
guge 50 3000 

更多参考: http://www.cnblogs.com/51linu... 该文章尾部的时候有一些闲得蛋疼的尝试

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/63958.html

相关文章

  • Linux工具】文本去重工具uniq

    摘要:简述用途报告或删除文件中重复的行。命令读取由参数指定的标准输入或文件。如果执行成功,命令退出,返回值。这个标志和标志是等价的。退出状态该命令返回以下退出值命令运行成功。补充文件经过处理后在它的输出文件中可能会出现重复的行。 简述 用途 报告或删除文件中重复的行。 语法 uniq [ -c | -d | -u ] [ -f Fields ] [ -s Characters ] [ -Fi...

    Riddler 评论0 收藏0
  • 一文掌握 Linux 性能分析之内存

    摘要:进程使用虚拟内存大小。进程使用物理内存大小,我们会重点关注这个值。几个字段介绍一下占用内存的文件的内存起始地址。占用内存的文件,为已分配的内存,为程序堆栈最后的为统计的总值。 本文首发于我的公众号 CloudDeveloper(ID: cloud_dev),专注于干货分享,号内有大量书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫。 前面我们已经学习了 CP...

    Scott 评论0 收藏0
  • 节省时间的那些 Linux 命令

    摘要:基础的网络管理命令或者,。使用来随机打乱一个文件中的行或者选择一个随机的行。比如,这条命令可以将重音都小写,并且去掉通过扩展并且丢掉要将文件切片,可以试试根据大小切分或者根据模式切分。前言:有网友在问答网站Quora上提问:有哪些省时小技巧,是每个Linux用户都应该知道的? Joshua Levy 平常就在 Linux 平台工作,并且他积累了不少实用命令行技巧,他在回复中精选出一部分。对...

    DoINsiSt 评论0 收藏0
  • Linux 基础学习笔记(一 bash shell)

    摘要:基于命令行与脚本编程大全的学习笔记更多的命令命令支持三种不同类型的命令行参数风格的参数,前面加单破折线风格的参数,前面不加破折线风格的长参数,前面加双破折线常用即为显示所有进程,显示完整的格式输出也可以在后面选择管道结束进程命令可以结 Linux(基于《Linux命令行与shell脚本编程大全》的学习笔记) 4 更多的bash shell ps 命令 ps 命令支持三种不同类型的命令...

    mochixuan 评论0 收藏0
  • linux命令小书

    摘要:命令只能显示内部的命令帮助信息。指令是指令的详细内容。但使用起来要方便的多。一个只有一页,而总是将它们的内容组织成多个区段节点,每个区段也可能包含子区段子节点。工具可显示更完整的最新的工具信息。你需要更新数据库,以获得最新的文件索引信息。 linux 学习笔记 学会使用命令帮助 帮助命令 whatis command (怎么用) whereis command (它在哪 查看程序的搜...

    fjcgreat 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<