23

来自 Linux 手册:通过键排序;KEYDEF 给出位置和类型。

我不知道这意味着什么,但我看到它是这样使用的:

cut -f 2 *ptt | tail -n +4 | sort | uniq -c | sort -k1 -rn

然后又像这样:

ls -1 *\.flv | sort -n -k1.2
4

2 回答 2

33

KEYDEF 是 F[.C][OPTS][,F[.C][OPTS]] 表示开始和停止位置,其中 F 是字段编号,C 是字段中的字符位置;两者都是原点 1,停止位置默认为行尾。如果 -t 和 -b 均无效,则字段中的字符从前一个空格的开头开始计数。OPTS 是一个或多个单字母排序选项 [bdfgiMhnRrV],它覆盖该键的全局排序选项。如果没有给出键,则使用整行作为键。

示例输入文件:

123 233
214 176 
341 325

按第一个字段排序:

sort -t' ' -k1 input

给出:

123 233
214 176
341 325

第二个字段:

sort -t' ' -k2 input

给出:

214 176
123 233
341 325

第一个字段的第二个和第三个数字:

sort -t' ' -k1.2 input

给出:

214 176
123 233
341 325

第二个字段的最后一位:

sort -t' ' -k2.3 input

给出:

123 233
341 325
214 176 
于 2013-07-04T21:54:19.913 回答
7

用比手册页更少的字眼:它指定了文件排序的“列”。如果列号包含句点,则超过句点的值将用作字段内的偏移量。例如,-k1.2按第一列的第二个字符排序。

列通常由制表符分隔,但您可以使用-t. 例如,-t,将使用由逗号分隔的列(例如,CSV 文件)。

于 2013-07-04T22:34:37.457 回答