Я пытаюсь отсортировать строку букв и цифр в алфавитно-цифровом порядке «интуитивным»/естественным способом с помощью команды 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 ГБ, содержащим миллионы строк.
Спасибо!
@42EBKAAXX09082*7*:6:100:1699:328/2
и@42EBKAAXX09082*8*:6:100:1699:328/2
(*
s для акцента)? они сортируются одинаково? (т.е. имеет значение только 3-е поле), тогда ответ @JonathanM лучше всего. В противном случае взгляните на мой - person tobyodavies   schedule 06.12.2011