sort命令实践

1.用man sort 查看sort的帮助文档

2.sort常用选项有哪些,都有什么功能?提交相关使用的截图

常用选项及相关功能(参考https://www.runoob.com/linux/linux-comm-sort.html)

-b:忽略每行前面开始出的空格字符。
-c:检查文件是否已经按照顺序排序。
-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f:排序时,将小写字母视为大写字母。
-i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m:将几个排序好的文件进行合并。
-M:将前面3个字母依照月份的缩写进行排序。
-n:依照数值的大小排序。
-u:意味着是唯一的(unique),输出的结果是去完重了的。
-o:<输出文件> 将排序后的结果存入指定的文件。
-r:以相反的顺序来排序。
-t<分隔字符>:指定排序时所用的栏位分隔字符。
+<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
--help:显示帮助。
--version:显示版本信息。
[-k field1[,field2]]:按指定的列进行排序。

查看完sort帮助文档后,新建一个文本文件sorttest,每行写一个数字,cat file进行查看

之所以将数字分行写,是因为sort的功能原理是将文件的每一行进行相互比较,从首字符向后按ascii码值进行比较,最后按升序输出。

sort sorttest.txt 对文本文件的内容进行排序,可以看到顺序有些奇怪,因为sort是从首字符先进行判断。

sort -n sorttest.txt -n表示按数字进行排序

sort -n -r sorttest.txt 加入-r,使其按降序排列

sort -u sorttest.txt -u会删除重复行,图中重复的有55、52、17,输入命令后多余的被删去。

sort -n -u sorttest.txt -o sorttest1.txt 由于sort只是起到过滤的作用,不会改变原文件,因此如果需要输出排序的结果,需要使用-o将排序后的结果重定向写入到文件。这里我将输出结果写入一个新文本文件sorttest1.txt

sort --help 查看帮助文档

sort --version 查看版本信息

3.如果让你编写sort,你怎么实现?写出伪代码和相关的函数或系统调用

sort实现

sort(数据,另一个数据,排序方法),比如 sort(int a;int b ;Bubble)

1、打开文件(fopen),通过一个指针char *file打开指向的文件,打开成功则指向该文件的指针返回,失败则返回NULL。

2、读取文件中的内容(fread),从起始地址将对象读取到数组中并返回成功读取的对象个数。若出现错误或到结束的地址,则返回零且不进行其他动作。

3、调用排序函数sort(int a;int b ;Bubble)对数组数据进行比较、排序。

4、将排序后的新数据重定向写入文件中(write),可以写入新文件也可以覆盖原文件。

5、关闭文件流(fclose),释放文件指针和有关的缓冲区。如果流成功关闭,返回 0,否则返回EOF(-1)。

原文地址:https://www.cnblogs.com/daijunxi2019/p/15344546.html