• 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关闭文件。
    
  • 相关阅读:
    VSCODE记录
    关闭vscode的C/C++代码错误提示
    Windows下修改VSCode工作区存储目录workspaceStorage
    取消掉远程桌面mstsc顶部(侧面)连接栏
    记一次某网站生产环境CPU忽高忽低故障解决过程
    HTML实现发送接收串口和TCP数据
    flutter环境管理工具fvm的安装及简单使用
    启动CAD,不打开指定的CAD,向指定的CAD写入数据
    JVM虚拟机垃圾回收
    JVM调优命令
  • 原文地址:https://www.cnblogs.com/sisterben/p/15345745.html
Copyright © 2020-2023  润新知