20191310李烨龙作业:MySort

作业:MySort


任务详情

1. 用man sort 查看sort的帮助文档
2. sort常用选项有哪些,都有什么功能?提交相关使用的截图
3. 如果让你编写sort,你怎么实现?写出伪代码和相关的函数或系统调用

完成过程

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

​ sort的用法如下:

sort [OPTION] ... [FILE] ...

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

​ 关于OPTION是指sort的指令选项,通过这些选项可以让sort完成不同的功能,其中主要的选项如下:

1. 	-n 将文件中的字符以数字的形式按照顺序排序
2. 	-r 将文件中的内容按照倒叙排序
3. 	-k 将文件中的内容依据key的内容来进行排序
4. 	-c 判断文件是否已经排序完成
5. 	-o 将输出写入指定文件
6.	-t 改变分隔符(默认为空格)
7.	-u 去除结果中的重复行
8.	-m 合并两个已排序的文件(不会对文件进行排序)

	1. -k 指令,指定第二个域进行排序。
	![](https://img2020.cnblogs.com/blog/1812924/202109/1812924-20210927224940341-603779780.png)

​ 2.-o指令,将排序输出到目标文件中。

​ 该指令无法创建目标文件,需要提前touch filename。

​ 按照我的预想来看,应该会将文件按照第一个域进行排序并将结果输出到目标文件中,但是结果是两个文件都被清空了。

​ 发现参数反了,应该是 -o 目标文件 原文件,可以看见文件2确实是本次输出的结果。

​ 3.-u指令,将文件中的重复内容删除。

​ 4.-c指令,判断文件是否为有序的。

​ 5.-m指令,合并两个已排序文件。

​ 可以看到合并之后的顺序十分杂乱,因为两个文件是按照不同域来进行排序的,所以对于该指令来说两个文件不是有序的,输出的内容是无意义的。该指令不会更改文件的内容。

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

​ 代码思路:该指令本身实现十分简单,排序方面只需要使用系统调用qsort,比较复杂部分的是如何实现sort的众多指令。

伪代码:

1.对指令输入进行判断:包含几个参数
2.系统调用open打开文件,系统调用read读取文件内容,创建二维数组存储文件内容。
	数组第一列存key,第二列存整体内容。
3.系统调用qsort对数组第一列进行排序。
4.系统调用write将排序后的数组第二列存入指定文件夹,系统调用close关闭文件。
posted @ 2021-09-27 22:51  20191310李烨龙  阅读(43)  评论(0编辑  收藏  举报