实践内容:使用man指令查看sort用法:
实践截图:
使用man sort查看sort指令的用法:
Sort是用于对单个或多个文本文件内容进行排序的Linux程序。Sort命令以空格作为字段分隔符,将一行分割为多个关键字对文件进行排序。需要注意的是除非你将输出重定向到文件中,否则Sort命令并不对文件内容进行实际的排序(即文件内容没有修改),只是将文件内容按有序输出。
参数:
实践内容: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; }