UNIX 如何仅按一列排序?

ssn*_*ssn 54 unix sorting

我知道 Unix排序的 -k 选项允许我们按特定列和以下所有内容进行排序。例如,给定输入文件:

2 3
2 2
1 2
2 1
1 1
Run Code Online (Sandbox Code Playgroud)

使用sort -n -k 1,我得到一个输出,按第一列排序,然后按第二列排序:

1 1
1 2
2 1
2 2
2 3
Run Code Online (Sandbox Code Playgroud)

但是,我想保留第二列的顺序,如下所示:

1 2
1 1
2 3
2 2
2 1
Run Code Online (Sandbox Code Playgroud)

这可以通过sort命令实现吗?

Cas*_*bel 80

试试这个:

sort -s -n -k 1,1
Run Code Online (Sandbox Code Playgroud)

-s禁用“最后手段”的排序,这对排序,这不是一个特定的键的一部分一切。

-k 1实际上并不意味着“本场和接下来的”在数字排序的情况下,你可以看到,如果你尝试排序的第二列。你只是看到连接线的其余部分被打破。但是,一般而言,您需要指定仅对字段 1-k 1,1进行排序。


tid*_*eck 10

要仅对第一列进行排序,您应该执行以下操作:

sort -n -s -k1,1
Run Code Online (Sandbox Code Playgroud)

来自Unix 和 Linux 系统管理手册

sort 接受密钥规范 -k3(而不是 -k3,3),但它可能不会按照您的预期执行。没有终止字段号,排序键继续到行尾