Shell 在非连续字段上排序:POSIX相当于';排序+;0-1+;2';

Shell 在非连续字段上排序:POSIX相当于';排序+;0-1+;2';,shell,unix,sorting,Shell,Unix,Sorting,给定文件内容: 1234 1 15ECS3 1234 2 MS21042 1234 1 16AS338 1235 1 0321042 我需要按第1列排序,然后按第3列排序,跳过第2列,如下所示: 1234 1 15ECS3 1234 1 16AS338 1234 2 MS21042 1235 1 0321042 我可以使用以下不推荐使用的命令使其工作: sort +0 -1 +2 file 但就我的一生而言,我无法让它与-km.n-km.n等价物一起工作。我

给定文件内容:

1234  1  15ECS3
1234  2  MS21042
1234  1  16AS338
1235  1  0321042
我需要按第1列排序,然后按第3列排序,跳过第2列,如下所示:

1234  1  15ECS3
1234  1  16AS338
1234  2  MS21042
1235  1  0321042
我可以使用以下不推荐使用的命令使其工作:

sort +0 -1 +2 file
但就我的一生而言,我无法让它与-km.n-km.n等价物一起工作。我试过:

sort -b -k1 -k3 file
作为我的基线,大约有20种变体,抛出所有看起来相关的开关,但这些开关大部分是多余的(绝望的迹象)

我错过了什么?上述工作代码的posix版本是什么

提前谢谢


-斯科特

我相信这就是你要找的:

sort -k1,1 -k3,3

这就成功了。这是否意味着“在字段1上开始排序,在字段1上结束”(-k1,1),“在字段3上开始排序,在字段3上结束”(-k3,3)?无论如何,非常感谢你的帮助;即使在谷歌搜索了大量的例子之后,我似乎也无法浏览主页。这帮了大忙。