sort应用
man sort 查看sort指令的用法
-
第一段
![]()
-
第二段
![]()
-
简单概述
sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。 使用方法:sort [选项]... [文件]... 长选项必须用的參数在使用短选项时也是必须的。顺序选项: -b, --ignore-leading-blanks ignore leading blanks -d, --dictionary-order consider only blanks and alphanumeric characters -f, --ignore-case fold lower case to upper case characters -g, --general-numeric-sort compare according to general numerical value -i, --ignore-nonprinting consider only printable characters -M, --month-sort compare (unknown) < `JAN' < ... < `DEC' -n, --numeric-sort compare according to string numerical value -r, --reverse reverse the result of comparisons Other options: -c, --check check whether input is sorted; do not sort -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1) -m, --merge merge already sorted files; do not sort -o, --output=FILE write result to FILE instead of standard output -s, --stable stabilize sort by disabling last-resort comparison -S, --buffer-size=SIZE use SIZE for main memory buffer -t, --field-separator=SEP use SEP instead of non-blank to blank transition -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or/tmp; multiple options specify multiple directories -u, --unique with -c, check for strict ordering; without -c, output only the first of an equal run -z, --zero-terminated end lines with 0 byte, not newline --help 显示此帮助信息并退出 --version 输出版本号信息并退出
sort的常用指令
-
直接sort排序
这很简单,直接输入sort 待排序文件就行:
sort number.txt
也可以sort,然后手动输入待排序数字进行排序。
-
sort功能选项
为了实现更多的排序功能,sort还有许多的可选选项,一般以-x的形式来调用,不同的选项可以同时引用。
-
sort的-n选项
对于多位数字,sort并不能把它们看成一个整体,只会把第一位拿出来比较,所以有可能出现10<2的情况,想要避免这种情况,就要用到sort的-n选项,表明是要按数值来排序。
sort的-n选项用法入下:
sort -n number.txt
-
sort的反向排序:-r
sort除了排序,也可以倒序排序,使用的是-r选项,用法和-n一样:
sort -r number.txt
- 实践如下:

-
sort的-u排序
这一选项可以删除掉序列中重复的元素。使用方法如下:
sort -u fruit.txt

-
sort的-o选项
很多的Linux命令都带有这个选项,可以将结果输入到指定的文件中去。如果文件不存在,就会创造一个该文件。用法如下:
sort fruit.txt -o shuiguo.txt
实践截图:

-
sort的-t和-k选项
有时候待排序的文件不一定只有一种可排序参数,对于多维的待排序数据,就要使用-t和-k选项了。
如果事先有准备,能将不同维度的数据用冒号":"分隔开,就可以用以下方式来对它进行处理了。方式如下:
sort -n -k 2 -t : score.txt
它表示以score.txt文件中的第二列数据(姓名)为标准来进行从小到大的排
改变-k和-t中间的数字,就可以改变排序标准。
实践结果如下:

- 其他的sort选项
- -f会将小写字母都转换为大写字母来进行比较,即忽略大小写比较。
2. -c会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1 。
3. -C会检查文件是否已排好序,如果乱序,不输出内容,仅返回1 -M会以月份来排序,比如JAN小于FEB等等。
4. -b会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。
- -f会将小写字母都转换为大写字母来进行比较,即忽略大小写比较。
手动实现sort功能
- 由于能力有限,只能提出可以对如姓名、学号和成绩等n维数据的数据进行排序的伪代码。
①头文件
②构造结构体,有足够多的维度,可以接受每一个元素的所有维度的数据。
③读取待排序文件,使用fread和fwrite,将每个元素转为一个结构体。
④构造n种比较模式函数,可以实现任意一个维度的数据的比较,(可添加内容:对顺序循环后一位的维度进行比较,以实现相同数据的准确排序)。
⑤排序函数,使用一种排序方式(快速、冒泡等)根据用户选择的排序模式,可以对任意维度进行排序,进行顺序和逆序输出结果。
⑥主函数

