排序不适用于相似的条目

排序不适用于相似的条目

我在将文件与另一个文件连接之前对其进行排序,使用

sort -k1 file1 > file1_sort

当我尝试加入第二个文件时,收到一条错误消息,指出 file1 未排序。我认为发生这种情况是因为以下条目:

chr6_32609371_I I2 D 
chr6_32609371 T C

在我的排序文件中,“chr6_32609371”行需要放置在“chr6_32609371_I”之前。我可以在排序命令中添加一个参数来实现这一点吗?

答案1

问题是sort -k1不会根据第一个字段排序,而是第一个字段到行尾。来自man sort(强调我的):

KEYDEF 是 F[.C][OPTS][,F[.C][OPTS]] 表示开始和停止位置,其中 F 是字段编号,C 是字段中的字符位置;两者都是原点 1,并且停止位置默认为行尾。

因此,-k1chr6_32609371_I I2 D与进行比较chr6_32609371 T C,并且由于I是 before T,因此它正在排序,如您所见。为了解决这个问题,您应该sort通过传递开始位置和结束位置来仅考虑第一个字段:

sort -k1,1 file

相关内容