我有一个像这样的文件(空格分隔):
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
Run Code Online (Sandbox Code Playgroud)
我想使用sort
命令根据第4列对文件进行排序.我在互联网上到处查看它,我找到了不同的解决方案,尼姑工作!我甚至在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
Run Code Online (Sandbox Code Playgroud)
所以在运行所有这些命令后,我得到了这个输出(与我的输入相同):
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
Run Code Online (Sandbox Code Playgroud)
我想获得这样的输出:
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
Run Code Online (Sandbox Code Playgroud)
jay*_*ngh 41
sort -nk4 file
-n for numerical sort
-k for providing key
Run Code Online (Sandbox Code Playgroud)
或添加-r option
反向排序
sort -nrk4 file
Run Code Online (Sandbox Code Playgroud)
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