我有一个像这样的文件(它是空格分隔的):
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
命令来根据第4列对文件进行排序。我在互联网上到处查找,我发现不同的解决方案,修女的作品!我甚至在Stack Overflow中发现了类似的问题,但答案对我不起作用!所以这些是我正在使用的命令,但不起作用!
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
4条答案
按热度按时间eoxn13cs1#
或添加
-r
选项进行反向排序qpgpyjmq2#
sort
不对文件进行就地排序。相反,它输出一个已排序的副本。您需要
sort -n -k 4 out.txt > sorted-out.txt
。**编辑:**要获得你想要的顺序,你必须对文件进行排序,数字 * 反向读取 *。这样做:
cut -d' ' -f4 out.txt | rev | paste - out.txt | sort -k1 -n | cut -f2- > sorted-out.txt
oalqel3c3#
应该是的
刚刚用GNU sort(--debug enabled)测试了这个:
mi7gmzs64#
需要说明的是,如果文件的每一行中的单词都由分隔符(除了'space')分隔,我们可以使用“-t”选项指定分隔符:
我们可以在任何指定的输出文件中获得排序输出(使用“-o”选项),而不是在标准输出中显示输出。
来源:http://www.thegeekstuff.com/2013/04/sort-files/