16

我正在尝试对以下文件进行排序:

a 2
b 1
a 10

我需要得到:

a 2
a 10
b 1

我知道 -kPOS[opts] 选项,并尝试使用它:

sort -k1 -k2n file

但这个命令只给了我:

a 10
a 2
b 1

所以它按第一列排序,但不是按第二列。运行仅sort -k2n file按第二列排序。

b 1
a 2
a 10

我怎么能按两列排序呢?

编辑:

排序(GNU coreutils)5.93

4

3 回答 3

31

您必须终止主键,否则, sort 使用从给定字段开始的所有字段:

sort -k1,1 -k2n
于 2013-01-31T11:44:57.907 回答
7

这几乎是正确的。试试这个:

sort -k1,1 -k2,2n
于 2013-01-31T11:49:12.637 回答
6

如果你有GNU sort排序,那么你可以做一个版本排序:

$ sort -V file
a 2
a 10
b 1

选项:

-V, --version-sort          natural sort of (version) numbers within text

版本排序的好处是无论列如何,它都可以工作:

$ cat file
a2
b1
a10

$ sort -V file
a2
a10
b1
于 2013-01-31T11:43:47.703 回答