Pregunta:
Así que tengo un archivo enormemente grande (alrededor de 10 GB) y necesito ordenarlo, como en el uso de la utilidad 'sort', pero de manera más efectiva.
El problema es que no tengo memoria, potencia de CPU, tiempo ni espacio de intercambio libre para alimentar todo el tipo.
Lo bueno es que el archivo ya está parcialmente ordenado (puedo decir que la distancia de cada línea desde su posición final es menor que algún valor N). Este tipo de me recuerda el ejemplo clásico de clase de computadora de usar heapsort con un montón de tamaño N para este propósito.
Pregunta: ¿Existe alguna herramienta Unix que ya lo haga de manera efectiva, o necesito codificar una yo mismo?
Gracias -mk
Respuesta:
Sería más fácil dividir el archivo en secciones más pequeñas y ordenarlas. Dividir:-
split --lines=100000 large_file file_part.
Luego clasifique cada uno de ellos usando el orden normal
for suffix in `ls file_part.* | cut -f2 -d.`
do
sort file_part.${suffix} > file_sorted.${suffix}
done
a continuación, puede combinar mediante la clasificación combinada
sort -m file_sorted.*
Eso debería ser mucho más fácil para su máquina.