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