如何在 unix shell 中对数字进行排序?

use*_*276 36 sort

如何使用排序命令对这些数字进行排序。

10
11
12
1
13
14
15
16
17
18
19
20
21
2
22
3
4
5
6
7
8
9
X
Y
Run Code Online (Sandbox Code Playgroud)

Kus*_*nda 64

正如@terdon 所注意到的,包含XY以及数字从 1 到 22 的事实将其识别为可能的人类染色体列表(这就是他说染色体M(线粒体)可能丢失的原因)。

要对数字列表进行排序,通常会使用sort -n

$ sort -n -o list.sorted list
Run Code Online (Sandbox Code Playgroud)

wherelist是未排序列表,list.sorted并将是结果排序列表。

使用-n,sort将对其输入执行数字排序。然而,由于一些输入不是数字,结果可能不是预期的;X并且Y将出现在排序列表中的第一个,而不是最后一个(性染色体通常列在 22 号染色体之后)。

但是,如果您使用sort -V(用于“版本排序”),您实际上会得到您想要的:

$ sort -V -o list.sorted list
$ cat list.sorted
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
X
Y
Run Code Online (Sandbox Code Playgroud)

如果您确实添加M,这可能仍然不起作用,因为它会在之前X而不是在最后排序(我相信它通常是如何呈现的)。