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