linux命令在生物信息学中的应用:sort

sort命令可以对文本处理后的结果进行排序,在文本处理过程中非常有用。

语法格式

sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][文件][-k field1[,field2]]

语法解释
-b 忽略每行前面开始处的空格字符。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-u 意味着是唯一的(unique),输出的结果是去完重了的。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
--help 显示帮助。
--version 显示版本信息。
[-k field1[,field2]] 按指定的列进行排序。

这其中最常用的就是-k参数了

-k参数的使用
基本使用

root@DESKTOP-1N42TVH:/home/test5/test# cat facebook.txt
google 110 5000
baidu 100 5000
guge 50 3000
sohu 100 4500
root@DESKTOP-1N42TVH:/home/test5/test# sort -k 1 facebook.txt  ## 按照第一列的第一个字符排序
baidu 100 5000
google 110 5000
guge 50 3000
sohu 100 4500
root@DESKTOP-1N42TVH:/home/test5/test# sort -k 2 facebook.txt  ## 按照第二列的第一个字符排序
sohu 100 4500
baidu 100 5000
google 110 5000
guge 50 3000

-k -n联用

root@DESKTOP-1N42TVH:/home/test5/test# sort -k 2n facebook.txt  ## 第二列按照整数值排序
guge 50 3000
baidu 100 5000
sohu 100 4500
google 110 5000
root@DESKTOP-1N42TVH:/home/test5/test# sort -k 2n -k 3n facebook.txt ## 第二列、第三列依次按照整数值排序
guge 50 3000
sohu 100 4500
baidu 100 5000
google 110 5000

设置对第n个字符排序,使用“.”

root@DESKTOP-1N42TVH:/home/test5/test# sort -k 1.2 facebook.txt  ## 按照第一列的第二个字符排序
baidu 100 5000
sohu 100 4500
google 110 5000
guge 50 3000
root@DESKTOP-1N42TVH:/home/test5/test# sort -k 1.3 facebook.txt  ## 按照第一列的第三个字符排序
guge 50 3000
sohu 100 4500
baidu 100 5000
google 110 5000

设置继续排序,使用“,”

root@DESKTOP-1N42TVH:/home/test5/test# sort -k 2,2 facebook.txt  ## 从第二个与开始排序,到第二个域结束,然后从头排序(是指第二列排序结束后,接着使用其他列排序,从第一列开始)
baidu 100 5000
sohu 100 4500
google 110 5000
guge 50 3000
root@DESKTOP-1N42TVH:/home/test5/test# sort -t " " -k 2n,2n -k 3n,3n facebook.txt ## 先按照第二个域按照数值排序,然后第三个域数值进行排序,然后从头排序
guge 50 3000
sohu 100 4500
baidu 100 5000
google 110 5000

未完待续

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容