我想使用SORT命令根据第5列对表格文件进行排序,但是,第3列中有一些缺失值。我注意到sort命令与-k5,5无法正常工作,但-k1,1或-k2,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列开始的字符进行排序。