用man sort 查看sort的帮助文档
sort常用选项有哪些,都有什么功能?
-
语法: sort [option] [file(s) ]
-
用途:将输入行按照键值字段与数据类型选项以及locale 排序
-
主要选项:
-b 忽略开头的空白
-c 检查输入是否已正确排序,如输入未经排序,但退出码(exit code)为非零值,则不会有任何输出
-d 字典顺序:仅文字数字与空白才有意义
-g 一般数值:以浮点数字类型比较字段。这个选项的运作有点类似 -n.差别仅在于这个选项的数字可能有小数点及指数。(仅GNU版本提供此功能)
-f 以不管字母大小写的方式排序
-i 忽略无法打印的字符
-k 定义排序键值字段(该选项后接一个字段编号,或则是一对数字。有时-k之后可用空白分隔。每个编号后都可以接一个点号的字符位置,及/ 或 修饰符(modifier)字母之一
.且当出现多个-k选项时候,会先从第一个键值开始排序,找出匹配该键值的记录后,再进行第二个键值字段的排序,以此类推。)
-m 将以排除的输入文件,合并为一个排序后的输出数据流。
-n 以整数类型比较字段
-o outfile 将输入写到指定文件,而非标准输出。如果该文件为输入文件之一,则sort 在进行配需与写到输入文件之前,会先将它复制到一个临时文件
-r 倒置排序的顺序为 由大至小(descending),而非默认的由小至大(ascending)
-t char 使用单个字符char作为默认的字段分割字符,取代默认的空白字符。
-u 只有唯一的记录,丢弃所有具有相同键值的记录,只留其中的第一条。只有键值字段是重要的,也就是说:被丢弃的记录其他部分可能是不同值。
如果让你编写sort,你怎么实现?写出伪代码和相关的函数或系统调用
利用read函数读取文件,文件格式应为姓名、学号、成绩、身高,每个元素占八个字节,每行只有一个人的数据。读取后每个换行符前按八字节分割为四块,分别赋给数组a1[]的0123四个变量,遇到下一个换行符,重复操作,赋给a2[]数组。用户通过输入123分别按学号、成绩、身高大小排序,输入1即利用快速排序方法通过比较a1[1],a2[1]等值的大小将数组整体进行排序,伪代码为:
for(i=1;i<输入行数;i++){
for(j=2;j<=输入行数;j++){
if(ai[k]>aj[k]){ (k为用户输入1、2、3、、)
交换ai[]与ak[]的位置
}
}
}
将结果利用write函数写入文件再读取此文件即可。