Gnu 排序:字段规范中的杂散字符

use*_*428 5 linux shell gnu gnu-coreutils

sort似乎不喜欢我的关键规范。为什么?

~/tmp $ sort --version
sort (GNU coreutils) 8.25
Packaged by Cygwin (8.25-1)
~/tmp $ echo 'a;b;c;d;e;f;g'|sort --field-separator=';' --key=1,5,2                                          
sort: stray character in field spec: invalid field specification '1,5,2'
Run Code Online (Sandbox Code Playgroud)

从手册页:

-k, --key=KEYDEF : 通过键排序;KEYDEF 给出位置和类型

KEYDEF 为 F[.C][OPTS][,F[.C][OPTS]] 开始和停止位置,其中 F 是字段编号,C 是字段中的字符位置;两者都是原点 1,停止位置默认为线的末端。

由于 KEYDEF 中的 .C 和 OPTS 部分是可选的,因此密钥规范 F、F、F(即仅字段编号)应该是正确的。我做错了什么?

顺便说一句,我的环境是 Cygwin,运行 Z-shell。

ted*_*oal 8

-k arg 中的两个字段是 START 和 END 字段。您可以指定 -k ANY NUMBER OF TIMES,以对多个键进行排序。因此,-k 1,1 -k 2,2 -k 3,3 将首先在字段 1 上排序,然后是字段 2,然后是字段 3。