Я пытаюсь отсортировать строку букв и цифр буквенно-цифровым способом "интуитивно" / естественным путем с помощью команды unix sort
, но не могу ее правильно отсортировать. У меня есть этот файл:
$ cat ~/headers
@42EBKAAXX090828:6:100:1699:328/2
@42EBKAAXX090828:6:10:1077:1883/2
@42EBKAAXX090828:6:102:785:808/2
Я бы хотел отсортировать его буквенно-цифровым способом, где интуитивно @42EBKAAXX090828:6:10:...
является первым (поскольку 10
меньше 100
и 102
), второе - @42EBKAAXX090828:6:100...
, а третье - @42EBKAAXX090828:6:102:204:1871/2
.
Я знаю, что предлагают сортировку по определенной позиции в строке, но позиция :
здесь может варьироваться, и поэтому это не будет общим и работоспособным решением здесь.
Я пытался:
sort --stable -k1,1 ~/headers > foo
с различными комбинациями параметров -n
и -u
, но это не дает правильного порядка.
Как это можно сделать эффективно, из bash с использованием sort
или из Python? Я хотел бы применить это к файлам размером 4-5 ГБ, содержащим миллионы строк.
Спасибо!