如何使用Linux命令排序根据第4列,数字顺序对文本文件进行排序?

mah*_*ood 27 linux sorting

我有一个像这样的文件(空格分隔):

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)


Jon*_*oni 8

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