Estoy tratando de combinar muchos archivos ordenados en un script de UNIX/Linux con sort -m
, y noté que sort
primero escribe el resultado en un archivo temporal y luego lo copia en el destino. Mi comprensión de -m
fue que asume que los archivos están ordenados, por lo que usar un archivo temporal es completamente innecesario, y desperdicia tanto espacio en el disco duro y ciclos de CPU (estoy usando sort
en una tubería que se bloquea esperando a que la clase genere algo .) ¿Hay alguna forma de decirle al sort
que no use archivos temporales al combinar archivos ordenados? O una mejor versión que no?Cómo combinar archivos ordenados sin usar un archivo temporal?
La CL exacta parece:
$ sort -m -s -t '_' -k 1,1n -k 2,2n <(gunzip <file_1) [...] <(gunzip <file_n) | gzip >output
estoy usando sort
de GNU coreutils 5,97.
creo porque 'sort' fue escrito como una utilidad de propósito general, no consideraron su caso como algo que añadir más complejidad al programa y así confiar en el mecanismo de tipo de enfermedad de transmisión sexual tmp archivos. .... Sería muy fácil escribir un script awk que recorre tu lista de archivos de entrada, compara cada 1ª línea, imprime el valor "más bajo" de un archivo, obtiene el siguiente registro de ese archivo, luego compara todo el registra nuevamente, buscando imprimir el siguiente registro 'más bajo'. Puede encontrar un límite de sistema en el archivo abierto, pero esto sería cierto para cualquier solución que codifique. prueba 4 ese primero. Buena suerte – shellter