0

我想使用 SORT 命令根据第 5 列对表格文件进行排序,但是,第 3 列中有一些缺失值。而且我注意到 sort 命令不能与 -k5,5 一起正常工作,但是 -k1,1 或 -k2,2 没有问题。是因为缺少值吗?

4

2 回答 2

5

默认情况下,sort只要有一个空格字符后跟一个非空格字符,就会认为一个字段开始。例如,在这个片段中:

a     b     c     d
e           f     g

第一行有四个字段,第二行有三个字段。

如果要使用不同的分隔符,可以使用-t选项指定。例如,要将制表符用作分隔符,您可以编写:

sort -t $'\t' -k 5,5

这将允许sort检测空字段(因为两个连续的选项卡将被解释为两个不同的分隔符,它们之间有一个空字段)。

于 2013-01-11T21:53:02.983 回答
0

如果您有时缺少列,我会猜测您的数据是固定格式的,即文本对齐如下:

1  2       3
2 23   12345

或这个

1  2   3
2  23  12345

而不是这个

1 2 3
2 23 12345

如果这是真的,您可以使用实际上没有出现在输入中的制表符,并使用键对现在的单字段-t/ -k1.20进行排序,例如对从第 20 列开始的字符进行排序。

于 2013-01-11T21:57:34.497 回答