Die Philosophie klassischer Unix-Tools wie sort
beinhaltet, dass Sie mit ihnen eine Pipe erstellen können. Jedes kleine Tool liest von STDIN
und schreibt nach STDOUT
. Auf diese Weise kann das nächste kleine Werkzeug in der Rohrleitung die Ausgabe der ersten als Eingabe lesen und darauf reagieren.
Also würde ich sagen, dass dies ein Fehler und kein Feature ist.
Lesen Sie auch über P ipes, Umleitung und Filter in dem sehr netten Buch von ESR.
Da Sie in dieselbe Datei zurückschreiben, haben Sie immer das Problem, dass die Redirect die Ausgabedatei öffnet, bevor die Sortierung durchgeführt wird und das Original geladen wird. Also ja, Sie müssen eine separate Datei verwenden.
Nun, nachdem wir das gesagt haben, gibt es Möglichkeiten, die ganze Datei zuerst in den Pipe-Stream zu puffern, aber normalerweise würden Sie das nicht tun wollen, obwohl es möglich ist, wenn Sie etwas schreiben, um es zu tun. Aber Sie würden spezielle Werkzeuge am Anfang und am Ende einfügen, um die Pufferung durchzuführen. Bash öffnet die Ausgabedatei jedoch zu früh, wenn Sie die >
redirect verwenden.
Ja, Sie brauchen eine zweite Datei! Der Befehl
%Vor% hätte bash, um die Umleitung von stout
vor der Ausführung von sort
einzurichten. Dies ist ein bestimmter Weg, um Ihre Eingabedatei zu überlisten.
Wenn Sie viele Dateien sortieren möchten, versuchen Sie Folgendes:
%Vor%Wenn Sie sich damit beschäftigen, Datensätze fester Länge aus einer einzigen Datei zu sortieren, kann der Sortieralgorithmus Datensätze innerhalb der Datei austauschen. Es stehen ein paar verfügbare Algorithmen zur Verfügung. Ihre Auswahl hängt von der Größe der zufälligen Eigenschaften der Datei ab. Im Allgemeinen tendiert quicksort dazu, die geringste Anzahl von Datensätzen zu tauschen, und ist normalerweise die Sortierung, die im Vergleich zu anderen Sortieralgorithmen zuerst abgeschlossen wird.