注意: 我们如果只需要按照第三行排序建议写成 -k3,3,而不要写成 -k3。因为-k3,3表示从第三列开始到第三列 结束,所以只包括第三列排序 。而-k3表示从第三列开始一直到最后一列排序 。当然在本案例中写-k3,3 和 -k3结果都是一样的 。
3.9 指定分隔符排序
默认情况下的分隔符为空白符(空格、制表符等),使用-t 可以自定义指定分隔符 。
假如我们有一个score.txt的文件内容如下(每行字段之间使用逗号分隔),每隔字段分别代表: 名称 科目 成绩
[root@dongjing sort]# cat score.txtTom,Scala,30Tom,Scala,30Tom,Java,30aJack,Python,95bJack,Python,95Jack,Spring,95Mike,Java,95Linda,Linux,85Linda,PHP,66Linda,Linux,85XY,PHP,100XY,Java,55Mike,Scala,9SS,Shell,99需求:将每科成绩按照从高分到低分排序,如果分数、科目都相同的话,按照名字降序排列 。(最后结果不能包含重复行)
[root@dongjing sort]# sort -u score.txt | sort -t "," -k2,2 -k3,3nr -k1,1rMike,Java,95XY,Java,55Tom,Java,30Linda,Linux,85XY,PHP,100Linda,PHP,66bJack,Python,95aJack,Python,95Tom,Scala,30Mike,Scala,9SS,Shell,99Jack,Spring,953.10 忽略头空格、忽略大小写排序
-b : 忽略头部空格 (默认)
-f : 将所有小写字母转换为大写字母比较
假如有一个test.txt的文件,内容如下:
[root@dongjing sort]# cat test.txtcomputermouseLAPTOP dataRedHat laptopdebianlaptop需求1:忽略开头空白排序
[root@dongjing sort]# sort -b test.txtcomputer datadebianlaptop laptopLAPTOPmouseRedHat[root@dongjing sort]# sort test.txtcomputer datadebianlaptop laptopLAPTOPmouseRedHat可以观察到不加-b 和加上结果是一样的 。
需求2: 忽略大小写排序
[root@dongjing sort]# sort -f test.txt laptop datacomputerdebianLAPTOPlaptopmouseRedHat可以观察到:①开头带有空白的排序到最前面了,这是因为 -f 会将每行所有的字符转换为大写,而空白的大写还是其本身,所以在排序的时候就排到前面了 ② 观察LAPTOP和laptop的位置可以看到我们忽略大小写已经有成效 。
注意: 使用-f 会打破默认忽略头空白排序的效果 。
推荐阅读
- 在 Linux 中使用变量
- 如何在 Linux 上创建和使用交换文件
- Java 13 明天发布,最新最全新特性解读
- Linux系统启动时为什么没有最先调用main函数?
- 丐帮洪启天是洪七公吗 历史上有丐帮洪七公吗
- 花砖茶介绍
- Linux常用命令:chmod修改文件权限 777和755分别是什么意思?
- 银杏树历史上在地球生长多少年 银杏树最早出现在几亿年前
- 有好茶 也要懂存茶最全的存茶知识
- 世界上第一场篮球比赛 历史上第一场篮球比赛
