Ich sortiere eine große Anzahl von Dateien nacheinander. Mit sort -o file file
. Die For-Schleife wurde auf halbem Weg angehalten und vor dem Neustart möchte ich die Sortieroption verwenden, -c
um das Sortieren zu beschleunigen. Aber es heißt, dass die -co
Optionen nicht kompatibel sind. Warum ist das so?
sort --version
sort (GNU coreutils) 8.13
OS: Ubuntu 12.10
Antwort1
Weil Sie sagen, dass Sie nur --check verwenden möchten, das keine Ausgabe erzeugt, und Sie geben auch an, dass die sortierte --Ausgabe in eine bestimmte Datei gehen soll. Dies sind sich gegenseitig ausschließende Konzepte, und sie werden in sort.c (gnu coreutils 8.20) mit erzwungen
if (checkonly)
{
…
if (outfile)
{
static char opts[] = {0, 'o', 0};
opts[0] = checkonly;
incompatible_options (opts);
}
Antwort2
Vorausgesetzt, Sie verwenden GNU sort
, bewirken die von Ihnen genannten Optionen Folgendes:
-c, --check, --check=diagnose-first
check for sorted input; do not sort
-o, --output=FILE
write result to FILE instead of standard output
Das -c
Flag informiert Sie lediglich darüber, ob die Eingabe bereits sortiert ist oder nicht:
$ echo -e "A\nB\nC" | sort -c
$ echo -e "A\nC\nB" | sort -c
sort: -:3: disorder: B
Wenn also die Eingabe sortiert ist, wird nichts gedruckt, und wenn die Eingabe nicht sortiert ist, wird eine Fehlermeldung an die Standardfehlerausgabe gesendet. Mit anderen Worten: Es sort -c
wird nie an die Standardausgabe gesendet. Da nie gedruckt wird, ergibt es wenig Sinn, die Ausgabe umzuleiten.
Antwort3
sort -c erzeugt nie eine Ausgabe. Es prüft nur die Datei. Ohne Ausgabe gibt es keinen Grund, sie in eine Datei zu schreiben. Daher inkompatibel mit -o.
Sie könnten -c als eine Art Prüfung einer Datei vor dem Sortieren verwenden, aber ich bin nicht sicher, ob das die Dinge tatsächlich so beschleunigen würde, wie Sie möchten.
Antwort4
Es besteht ein großer Unterschied zwischen der Prüfung, ob eine Datei sortiert ist, und dem Sortieren der Datei.
Bei der Prüfung reichen im besten Fall zwei Einträge (geht recht schnell), beim ersten Eintrag der nicht sortiert ist kann das Kommando beendet werden und die Prüfung ist zwar erledigt, die Ausgabe wäre an dieser Stelle aber unvollständig, der schlimmste Fall ist wenn die Datei sortiert ist (nur dann hätte die Ausgabe einen Sinn ergeben).
Wenn Sie viele Dateien zu sortieren haben und häufig Unterbrechungen vornehmen müssen, sollten Sie wahrscheinlich auf irgendeine Weise den Überblick über die fertigen Dateien behalten, bevor Sie sie erneut sortieren.