我被困在一个小的分类步骤。我有一个大于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
对第二个字段(作为数字)进行排序。