У меня очень большой файл, более 100 ГБ (много миллиардов линий), и я хотел бы как можно быстрее провести двухуровневую сортировку в Unix-системе с ограниченной памятью. Это будет один шаг в большом скрипте perl, поэтому я бы хотел использовать perl, если это возможно.Как эффективно сортировать большой файл на двух уровнях?
Итак, как я могу это сделать? Мои данные выглядят так:
A 129
B 192
A 388
D 148
D 911
A 117
... Но для миллиардов линий. Мне нужно сначала сортировать по букве, а затем по номеру. Было бы проще использовать свой род Unix, как ...
sort -k1,2 myfile
Или я могу сделать все это в Perl-то? Моя система будет иметь примерно 16 ГБ памяти, но файл составляет около 100 ГБ.
Спасибо за любые предложения!
Все ли цифры 3 цифры? Если нет, то они выровнены по правому краю? Если оба эти условия сохраняются (все 3 цифры или выравнивание по правому краю), вам нужен только одноуровневый текстовый вид. –
@Jim, спасибо за комментарий. Нет, цифры варьируются от 1-100 000 000, и это всего лишь два несмежных столбца более крупной электронной таблицы (данные секвенирования генома) – jake9115