1. 用man sort 查看sort的帮助文档
2. sort常用选项有哪些,都有什么功能?提交相关使用的截图
3. 如果让你编写sort,你怎么实现?写出伪代码和相关的函数或系统调用
用man sort 查看sort帮助文档:
常见命令及功能:
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-u 意味着是唯一的(unique),输出的结果是去完重了的。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
--help 显示帮助。
--version 显示版本信息。
[-k field1[,field2]] 按指定的列进行排序。
实践
初始文本:
sort sort.txt 直排序:
sort -k2 sort.txt 按第n域排序:
sort -r -k3 sort.txt 按第三域的逆排序:
sort -k1 sort.txt -o 20191324.txt 将第一域正排序后生成到新文本文件里:
sort -c -k1 sort.txt sort -c -k1 20191324.txt 查看两个文件是否按要求排好序,可见sort.txt未排好序:
sort -m sort2.txt 20191324.txt -o sort3.txt 将两个排序好的文件合并到一起:
伪代码:
点击查看代码
#include<unistd.h> //该头文件包含读写操作函数
#include<stdio.h>
# include<stdio.h>
case 1: //手动输入一个数组,对该数组进行sort排序再输出--冒泡
int nums[10] = {4, 5, 2, 10, 7, 1, 8, 3, 6, 9};
int i, j, temp;
//冒泡排序算法:进行 n-1 轮比较
for(i=0; i<10-1; i++){
//每一轮比较前 n-1-i 个,也就是说,已经排序好的最后 i 个不用比较
for(j=0; j<10-1-i; j++){
if(nums[j] > nums[j+1]){
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
//输出排序后的数组
for(i=0; i<10; i++){
printf("%d ", nums[i]);
}
printf("
");
case 2: //对文本文件内容进行排序后重写如文本文件里--排序方法同上用冒泡排序
int read(int handle, void *buf, int count); //读
*****************
冒泡排序
*****************
int write(int handle, void *buf, int count); //写
//对文件操作不太熟,只能想个大概