zoukankan      html  css  js  c++  java
  • 20191317王鹏宇sort

    sort



    实践内容:使用man指令查看sort用法
    实践截图:

    使用man sort查看sort指令的用法:

    Sort是用于对单个或多个文本文件内容进行排序的Linux程序。Sort命令以空格作为字段分隔符,将一行分割为多个关键字对文件进行排序。需要注意的是除非你将输出重定向到文件中,否则Sort命令并不对文件内容进行实际的排序(即文件内容没有修改),只是将文件内容按有序输出。

    参数:

    • -b 忽略每行前面开始出的空格字符。
    • -c 检查文件是否已经按照顺序排序。
    • -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
    • -f 排序时,将小写字母视为大写字母。
    • -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
    • -m 将几个排序好的文件进行合并。
    • -M 将前面3个字母依照月份的缩写进行排序。
    • -n 依照数值的大小排序。
    • -o将排序后的结果存入指定的文件。
    • -r 以相反的顺序来排序。
    • -t指定排序时所用的栏位分隔字符。
    • --help 显示帮助。
    • --version 显示版本信息

    实践内容:sort命令使用
    下图是20191317.txt文件的内容:



    指令:cat sort.txt | sort
    实践截图:

    在上面的命令中,当前的排序是按照首个字符进行的,这一行不应该在最后一行吗?所以按照首字符大小,确实是从小到大的排序,而如果想要指定按照“数字”的方式进行排序,则需要加上-n参数。



    接下来是sort实现逆向排序:
    指令:cat sort.txt | sort -n -r

    可以从输出结果看出,确实实现了逆向排序。



    下面是sort实现选择分隔符进行排序:
    指令:cat stu.txt |sort -t':' -k 3 -n stu.txt
    文件stu.txt内容:

    使用-t来选择分隔符,使用-k来选择区域:
    当选择第三个区域进行排序:会对最后面的数字进行从小到大的排序

    选择第一个区域进行排序:会对最前面的学号进行从小到大的排序


    以下是几个常用的sort命令:

    -f会将小写字母都转换为大写字母来进行比较,亦即忽略大小写

    -c会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1

    -C会检查文件是否已排好序,如果乱序,不输出内容,仅返回1

    -M会以月份来排序,比如JAN小于FEB等等

    -b会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。

    实践内容:编写伪代码
    伪代码如下:

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    //设置学生结构体
    struct student{
    	stuNum; //学号
    	name[20];//姓名
    	score;//成绩
    };
    //读取文件内容到结构体
    void readfile()
    {
        FILE *fd;  // filename 的文件描述符
        fscanf(fd,"%d %s %d", a->stuNum, &a->name, &a->score) //将文件内容传递到结构体数组中
        fclose(fd);
    }
    //依据学生学号排序
    void stuNum_sort()
    {
    	对结构体数组中存储学号按照大小进行正向冒泡排序
    	输出排序好的学号姓名成绩
    }
    
    //依据学生姓名排序
    void sort()
    {
    	对结构体数组存储的姓名按照ascii码大小进行正向冒泡排序
    	输出排序好的学号姓名成绩
    }
    
    //依据成绩进行排序
    void stuScore_sort(student *stu,int n)
    {
    	对结构体数组存储的成绩按照大小进行正向冒泡排序
    	输出排序好的学号姓名成绩
    }
    
    //main函数
    int main()
    {
    	输入文件名filename;
    	readfile(filename);
    	输入排序方式t;
    	switch (t)
    	{
    		case 1:
    			stuNum_sort();//学号排序
    			break;
    		case 2:
    			name_sort();//姓名排序
    			break;
    		case 3:
    			score_sort();//成绩排序
    			break;
    	}
    	return 0;
    }
    
  • 相关阅读:
    Thinhole类声明和实现
    Pinhole类声明和实现
    Camera类定义和实现
    同心映射定义和测试
    Hammersley采样类定义和测试
    NRooks采样类定义和测试
    MultiJittered采样类定义和测试
    Jittered采样类定义和测试
    git分支操作
    Git单人本地仓库操作
  • 原文地址:https://www.cnblogs.com/wpy-1049363419/p/15345214.html
Copyright © 2011-2022 走看看