排序不适用于类似条目

use*_*089 5 sort

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

sort -k1 file1 > file1_sort
Run Code Online (Sandbox Code Playgroud)

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

chr6_32609371_I I2 D 
chr6_32609371 T C
Run Code Online (Sandbox Code Playgroud)

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

ter*_*don 5

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

KEYDEF 为 F[.C][OPTS][,F[.C][OPTS]] 开始和停止位置,其中 F 是字段编号,C 是字段中的字符位置;两者都是原点 1,停止位置默认为线的末端。

因此,-k1在比较chr6_32609371_I I2 Dchr6_32609371 T C,自I之前T,它是当你看到排序。为了解决这个问题,你应该告诉sort只通过传递开始和结束位置来考虑第一个字段:

sort -k1,1 file
Run Code Online (Sandbox Code Playgroud)