排序 - 如果某些列中缺少值,该怎么办?

时间:2013-01-11 21:45:45

标签: linux bash unix sorting

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

2 个答案:

答案 0 :(得分:5)

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

a     b     c     d
e           f     g

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

如果要使用其他分隔符,可以使用-t选项指定。例如,要使用制表符作为分隔符,您可以编写:

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

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

答案 1 :(得分:0)

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

1  2       3
2 23   12345

或者

1  2   3
2  23  12345

而不是这个

1 2 3
2 23 12345

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