我有一个这样的文件(以空格分隔):
AX-18 Chr1_419085 1 41908545 T C -1 98 0.51
AX-19 Chr1_419087 1 41908740 T C 0 15 0.067
AX-20 Chr1_419087 1 41908741 T C 0 13 0.067
并且我想使用sort
命令来根据第四列对文件进行排序。我在网上到处找,我找到了不同的解决方案,修女工作!!我甚至在stackoverflow中发现了类似的问题,答案对我来说不起作用!这些就是我正在使用但不起作用的命令!
sort -n -k 4,1 out1.txt
sort -n -k 4 out1.txt
sort -n -k4 out1.txt
sort -nk4 out1.txt
sort +4 out1.txt
因此,在运行所有这些命令后,我得到以下输出(与我的输入相同):
AX-18 Chr1_419085 1 41908545 T C -1 98 0.51
AX-19 Chr1_419087 1 41908740 T C 0 15 0.067
AX-20 Chr1_419087 1 41908741 T C 0 13 0.067
我想要得到这样的输出:
AX-19 Chr1_419087 1 41908741 T C 0 15 0.067
AX-20 Chr1_419087 1 41908740 T C 0 13 0.067
AX-18 Chr1_419085 1 41908545 T C -1 98 0.51
发布于 2012-01-26 16:42:26
sort -nk4 file
-n for numerical sort
-k for providing key
或者添加-r option
以进行反向排序
sort -nrk4 file
发布于 2012-01-26 16:38:47
它应该是
sort -k 4n out1.txt
刚刚用GNU sort (--debug enabled)测试了这一点:
$ tac input | /bin/sort --debug -k 4n
/bin/sort: using simple byte comparison
/bin/sort: key 1 is numeric and spans multiple fields
AX-18 Chr1_419085 1 41908545 T C -1 98 0.51
________
___________________________________________
AX-19 Chr1_419087 1 41908740 T C 0 15 0.067
________
___________________________________________
AX-20 Chr1_419087 1 41908741 T C 0 13 0.067
________
___________________________________________
发布于 2016-08-20 04:51:23
值得一提的是,如果文件的每一行中的单词都用分隔符分隔(空格除外),我们可以使用“-t”选项指定分隔符:
sort -n -t',' -k4 file -o outfile
我们可以在任何指定的输出文件中获得排序的输出(使用“-o”选项),而不是在标准输出上显示输出。
https://stackoverflow.com/questions/9015533
复制相似问题