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;
}
标签:sort,文件,txt,字符,王鹏宇,排序,20191317,进行 来源: https://www.cnblogs.com/wpy-1049363419/p/15345214.html