Linux命令之sort指令
1. 用man sort 查看sort的帮助文档
2. sort常用选项有哪些,都有什么功能?提交相关使用的截图
3. 如果让你编写sort,你怎么实现?写出伪代码和相关的函数或系统调用
1.使用指令后,查阅结果如下:
2.通过帮助文档,可以获取一些sort命令的选项,例如:
参考网站:https://www.runoob.com/linux/linux-comm-sort.html
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-u 意味着是唯一的(unique),输出的结果是去完重了的。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
--help 显示帮助。
--version 显示版本信息。
在这里,我选取其中一些较为常用的选项进行实践
首先先创建两个文本文件供排序使用
/**********st1**********/
20191301 zhangsan 95 A
20191308 zhaosi 99 A
20191322 wangwu 62 B
20191329 zhaoliu 85 A
20191319 jiayi 74 E
20191212 bingding 55 F
20191315 wuxu 95 D
/**********st2**********/
20191329 zhaoliu 85 A
20191320 pipa 85 A
20191213 wuji 58 B
20191316 shenyou 85 E
经过单一的sort命令后,自动对第一列进行排列,得到如下结果
下面对其它选项进行实践验证
(1)
sort st1 -o st3 //将st1文件排序后输出到st3中
(2)
sort -c //检验是否为经过排序的文件,是的话不会提示任何内容,否则会提示出第一个出现错误的行
(3)
sort -r st1 //倒序输出排序结果
(4)
sort -k2 st1 //将st1中的文件的第2列为主关键字进行排序
sort -k4 st1 //将st1中的文件的第4列为主关键字进行排序
(5)
sort -m st1 st2 //将st1与st2的内容合并。
//如果都是排序好的文件的话(st3为st1的排序结果,st4为st2的排序结果)可以直接将两文件合并后排序
3.伪代码及相关函数
已知存在st文件为待排序文本文件
(1)头文件
(2)打开读取文本文件
(3)创立二维数组,以i,j分别作为行号,列号
(4)将文本文件中的内容,按照文件中的顺序代入数组,以空格区分列
(5)根据sort命令,判断排序的主关键字(第几列),然后将列数组进行冒泡排序
默认情况下冒泡排序:将num[1,1]与num[2,1],进行比对,若前者小于后者则继续比对num[2,1]与num[3.1],否则将两者顺序互换,继续比对num[2,1]与num[3.1],直到遍历所有行
(6)在进行冒泡排序时,如果进行互换,还要将同一行的内容全部进行对换
(7)输出最终结果
(8)关闭并保存文件