Orden de Unix para conjuntos de datos parcialmente ordenados

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.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım