Estoy ordenando una gran cantidad de archivos uno tras otro. Usando sort -o file file
. El bucle for se detuvo a mitad de camino y antes de reiniciar quiero usar -c
la opción de clasificación para acelerar la clasificación. Pero dice que -co
las opciones no son compatibles. ¿Por que es esto entonces?
sort --version
sort (GNU coreutils) 8.13
OS: Ubuntu 12.10
Respuesta1
Porque le está diciendo que solo desea verificar cuál no genera salida y también especifica que desea que la salida ordenada vaya a un archivo determinado. Estos son conceptos mutuamente excluyentes y se aplican en sort.c (gnu coreutils 8.20) con
if (checkonly)
{
…
if (outfile)
{
static char opts[] = {0, 'o', 0};
opts[0] = checkonly;
incompatible_options (opts);
}
Respuesta2
Suponiendo que esté utilizando GNU sort
, las opciones que menciona son:
-c, --check, --check=diagnose-first
check for sorted input; do not sort
-o, --output=FILE
write result to FILE instead of standard output
La -c
bandera simplemente le informará si la entrada ya está ordenada o no:
$ echo -e "A\nB\nC" | sort -c
$ echo -e "A\nC\nB" | sort -c
sort: -:3: disorder: B
Entonces, si la entrada está ordenada, no se imprime nada y si la entrada no está ordenada, se imprime un mensaje de error con el error estándar. En otras palabras, sort -c
nunca imprime en la salida estándar. Como nunca imprime, no tiene mucho sentido redirigir su salida.
Respuesta3
sort -c nunca produce resultados. Sólo comprueba el archivo. Sin resultados, no hay razón para escribirlos en un archivo. Entonces, incompatible con -o.
Podrías usar -c como una especie de verificación de un archivo antes de ordenarlo, pero no estoy seguro de que eso acelere las cosas como deseas.
Respuesta4
Hay una gran diferencia entre comprobar si un archivo está ordenado y ordenarlo.
Al verificar, en el mejor de los casos dos entradas son suficientes (bastante rápido), en la primera entrada que no está ordenada el comando puede salir y se realiza la verificación, pero en este punto la salida estaría incompleta, el peor caso es cuando el archivo está ordenado (sólo en este caso la salida tendría sentido).
Si tiene muchos archivos para ordenar y los interrumpe con frecuencia, probablemente debería realizar un seguimiento de alguna manera de los archivos terminados antes de volver a ordenarlos.