我在将文件与另一个文件连接之前对其进行排序,使用
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,并且停止位置默认为行尾。
因此,-k1
是chr6_32609371_I I2 D
与进行比较chr6_32609371 T C
,并且由于I
是 before T
,因此它正在排序,如您所见。为了解决这个问题,您应该sort
通过传递开始位置和结束位置来仅考虑第一个字段:
sort -k1,1 file