Linux: 史上最全的sort命令案例,打包带走吧( 二 )

注意: 我们如果只需要按照第三行排序建议写成 -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 会打破默认忽略头空白排序的效果 。




推荐阅读