我正在尝试对以下格式的文件进行排序

ch1 1 209
ch1 23 890
ch3 45 21
ch4 66 12
ch10 12 90
ch10 11 53

我在使用命令
sort -t $"\t" -nk1 filename

但结果是,ch1在ch10之后
ch10 12 90
ch10 11 53
ch1 1 209
ch1 23 890
ch3 45 21
ch4 66 12

但我希望1在10之前,因为它是数值。那么有人能提出需要做什么吗?
预期结果:
ch1 1 209
ch1 23 890
ch3 45 21
ch4 66 12
ch10 12 90
ch10 11 53

最佳答案

指定KEYDEF字段中数字开始处的字符索引。在本例中,我们希望对第一个字段的数字部分进行排序,该部分从第三个字符开始,因此-k1.3n

$ sort -k1.3n file
ch1     1       209
ch1     23      890
ch3     45      21
ch4     66      12
ch10    11      53
ch10    12      90

08-17 05:38