sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始!
1 sort的工作原理
sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
[rocrocket@rocrocket programming]$ cat seq.txt
banana
apple
pear
orange
[rocrocket@rocrocket programming]$ sort seq.txt
apple
banana
orange
pear
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
4 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
5 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
6 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选项,后面可以设定间隔符。(是不是想起了cut和paste的-d选项,共鸣~~)
指定了间隔符之后,就可以用-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
我们使用冒号作为间隔符,并针对第二列来进行数值升序排序,结果很令人满意。
7 其他的sort常用选项
-f会将小写字母都转换为大写字母来进行比较,亦即忽略大小写
-c会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1
-C会检查文件是否已排好序,如果乱序,不输出内容,仅返回1
-M会以月份来排序,比如JAN小于FEB等等
-b会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。
未完待续,敬请期待:《sort命令的k选项大讨论》
over~
分享到:
相关推荐
Linux sort 命令参数及用法详解 Linux sort 命令是一个功能强大且实用的命令行工具,用于对文本文件的内容进行排序。sort 命令的主要功能是将文本文件的内容按照指定的顺序进行排序,以行为单位进行排序。 语法:...
在Linux系统中,`sort`命令是一个非常实用且强大的文本处理工具,主要用于对文本文件中的行进行排序。根据给定的文件信息,我们将深入探讨`sort`命令的多个功能选项,以及它们如何帮助用户更有效地管理和操作数据。 ...
Linux sort命令 Linux sort命令用于将文本文件内容加以排序。 sort可针对文本文件的内容,以行为单位来排序。 语法 sort [-bcdfimMnr][-o][-t][+-][--help][--verison][文件] 参数说明: -b 忽略每行前面开始出的...
Linux 下 uniq 和 sort 命令用法详解 uniq 命令是 Linux 中的一个文本处理命令,用于去除文本中的重复行。该命令读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用...
Linux 之 sort 命令详解 Linux 之 sort 命令是 Linux 中一个非常有用的命令,用于对文本文件中的数据进行排序。sort 命令可以根据不同的数据类型进行排序,例如按照字母顺序、数字顺序、日期顺序等。 sort 命令的...
**Linux `ps` 命令详解** 在Linux操作系统中,`ps`(Process Status)命令是用于查看系统当前进程状态的工具。它能够显示进程的实时信息,帮助用户了解系统的运行情况,进行进程管理。`ps`命令历史悠久,功能强大,...
Linux 文件处理命令 - wc、sort 和 diff 命令 Linux 操作系统中,文件处理是日常维护和管理中非常重要的一部分。wc、sort 和 diff 命令是 Linux 中三个非常有用的文件处理命令,本文将详细介绍这三个命令的使用方法...
Linux 下 uniq 和 sort 命令用法 uniq 命令是 Linux 中的一个文本处理命令,用于删除或显示文本文件中的重复行。它可以读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是...
Linux操作系统以其稳定性和灵活性在IT领域占据着重要地位,学习和掌握Linux常用命令是成为熟练的系统管理员或开发者的基础。以下是一些常见的Linux命令及其详细解释: 1. **Ctrl+u**:清除当前行的输入。 2. **命令...
通过学习这些基本的Linux命令和Shell操作,初学者可以更快地熟悉Linux环境,并能有效地管理和操作Linux系统。此外,掌握这些技能还有助于提升在开发、运维以及其他与Linux相关的领域的专业能力。
### Linux常用命令详解 #### 一、登录与用户管理 **1. login** - **功能描述**:`login` 命令用于用户登录到 Linux 系统。 - **基本语法**:`login [选项]` - `[name]` 指定用户名。 - `[p]` 如果指定了该选项...
Linux 常用命令 Linux 操作系统提供了许多实用的命令,以下是其中的一些: 1. tar 命令:创建和管理 tar 文件 tar 命令用于创建和管理 tar 文件。tar 文件是一种存档文件格式,用于存储和传输文件。tar 命令可以...
3. `sort.c`: `sort`命令对输入数据进行排序。源代码包含了复杂的数据处理逻辑,如比较函数、内存管理和快速排序算法。这对于学习算法和数据结构有很好的参考价值。 4. `copy.c`: 可能是实现`cp`命令的一部分,用于...
Linux 中的 Sort 和 Tsort 命令是两种功能强大且灵活的命令行工具,用于对文件进行排序和处理。Sort 命令可以对文件中的行进行排序、合并文件、查看是否需要排序等操作,而 Tsort 命令则可以对文件中的行进行拓扑...
linux 核心命令源码(cp mv cat chgrp chown cut date df du echo env expand expr find force fs group head hostname join kill link ls mkdir mv nice od paste printf ptx rm selinux seq sleep sort split stat...
Linux命令大全(CHM格式离线版) Linux命令大全(修改版) 进行重新编译的说明 文件传输 bye ftp ftpcount ftpshut ftpwho ncftp tftp uucico uucp uupick uuto 备份压缩 ar bunzip2 bzip2 bzip2recover compress cpio ...
LINUX处理文本命令 处理文本和文本文件的命令 一. sort 文件排序, 通常用在管道中当过滤器来使用. 这个命令可以依据指定的关键字或指定的... 这个命令经常出现在sort命令的管道后边. 四. expand, unexpand ... ...
Linux ps 命令详解 Linux ps 命令是一种强大的进程查看命令,可以确定有哪些进程正在运行、进程是否结束、进程是否僵死、哪些进程占用了过多的资源等等。ps 命令最经常使用的是用于监控后台进程的工作情况,因为...
2. 文本处理命令,如`cat`, `grep`, `awk`, `sed`, `sort`等,用于查看、搜索、筛选、排序和文本处理。 3. 系统管理命令,如`ps`, `top`, `kill`, `nice`, `nohup`等,用于监控和管理正在运行的进程。 4. 网络管理...