Mam bardzo duży plik, ponad 100 GB (wiele miliardów linii), i chciałbym przeprowadzić sortowanie na dwóch poziomach tak szybko jak to możliwe w systemie unix z ograniczoną pamięcią. Będzie to jeden krok w dużym skrypcie perla, więc chciałbym użyć perla, jeśli to możliwe.Jak efektywnie sortować duży plik na dwóch poziomach?
Jak mogę to zrobić? Moje dane wyglądają następująco:
A 129
B 192
A 388
D 148
D 911
A 117
... Ale za miliardy linii. Najpierw muszę posortować według litery, a następnie według numeru. Łatwiej byłoby użyć sortowania unix, jak ...
sort -k1,2 myfile
Albo można zrobić to wszystko w Perlu jakoś? Mój system będzie miał coś takiego jak 16GB RAM, ale plik ma około 100 GB.
Dzięki za wszelkie sugestie!
Czy wszystkie numery 3 cyfry? Jeśli nie, to czy są one wyrównane do prawej? Jeśli oba te warunki są spełnione (wszystkie 3 cyfry lub wyrównane do prawej), potrzebujesz tylko jednego poziomu sortowania tekstowego. –
@ Jim, dzięki za komentarz. Nie, liczby mieszczą się w przedziale 1-100 000 000, a są to tylko dwie nieprzylegające kolumny większego arkusza kalkulacyjnego (dane sekwencjonowania genomu) – jake9115