sort

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("\n");
case 2:              //对文本文件内容进行排序后重写如文本文件里--排序方法同上用冒泡排序
  int read(int handle, void *buf, int count);   //读
  *****************
    冒泡排序
  *****************
  int write(int handle, void *buf, int count);  //写
//对文件操作不太熟,只能想个大概
posted on 2021-09-27 22:07  20191324  阅读(60)  评论(0)    收藏  举报