我被困在一个小的分类步骤。我有一个大于300K条目的大文件,文件必须按包含字母数字标识符的特定列排序

Rpl12-8
Lrsam1-1
Rpl12-9
Lrsam1-2
Rpl12-10
Lrsam1-5
Rpl12-11
Lrsam1-101
Lrsam2-1
Act-1
Act-100
Act-101
Act-11

问题是宽度大小可变,所以我无法指定第二个密钥标识符(sort-k 1.8n)。第一个排序是在第一个字母表上,然后是在它旁边的数字,然后是在“-”之后的第三个数字。我可以特别启用排序后“-”使用分隔符字段,所以我不关心字符串的宽度。
期望输出为:
Act-1
Act-11
Act-100
Act-101
Lrsam1-1
Lrsam1-2
Lrsam1-5
Lrsam1-101
Lrsam2-1
Rpl12-8
Rpl12-9
Rpl12-10
Rpl12-11

最佳答案

在input.txt中输入上述数据:

sort -t- -k1,1 -k2n input.txt

您可以使用-将字段分隔符更改为-t,然后仅使用-k1,1对第一个字段(作为字符串)进行排序,最后使用-k2n对第二个字段(作为数字)进行排序。

10-02 09:26