Ich habe zwei Dateien mit einigen Namen darin. Beim Ausführen cat file1 file2 | sort
zeigt das Terminal die Namen alphabetisch sortiert an, beim Ausführen cat file1 file2 > file3 | sort
sehe ich jedoch nicht die sortierte Ausgabe. Warum?
Antwort1
Sie haben die Ausgabe von file1
und bereits file2
in die neue Datei umgeleitet file3
.
Mit diesem Befehl cat file1 file2 > file3 | sort
nach sort
Pipe.
Dies kann wie folgt überprüft werden.
cat file1
A
Z
B
cat file2
F
G
C
Wenn ich den Befehl jetzt als ausführe, cat file1 file2 > file3 | sort
können wir sehen, dass der Inhalt von file1
und file2
geschrieben wird file3
, aber nicht sortiert ist.
Ich glaube, dass das, was Sie erreichen möchten, ziemlich einfach erreicht werden könnte, indem
cat file1 file2 | sort > file3
Die Ausgabe wird jedoch nicht im Konsolenfenster angezeigt.
Wenn die Ausgabe von zwei Dateien nach dem Sortieren in eine neue Datei geschrieben werden soll und die sortierte Ausgabe gleichzeitig in der Konsole verfügbar sein soll, können Sie wie folgt vorgehen.
cat file1 file2 | sort > file3; cat file3
tee
Es ist jedoch gut, in diesem Fall davon Gebrauch zu machen . tee
könnte effektiv verwendet werden als,
cat file1 file2 | sort | tee file3
Der obige Befehl verkettet grundsätzlich zwei Dateien, sortiert sie, zeigt die Ausgabe in der Konsole an und schreibt gleichzeitig die Ausgabe der Pipe in die mit dem tee
Befehl angegebene neue Datei.
Als BenutzerCaseyweist darauf hin, dass zsh
Sie auch den folgenden Befehl verwenden können, wenn auf Ihrem System eine Shell verfügbar ist.
sort <file1 <file2 | tee file3
Antwort2
POSIX definiert den sort
Zweck des Dienstprogramms wie folgt:
Sortiert die Zeilen aller benannten Dateien gemeinsam und schreibt das Ergebnis in die angegebene Ausgabe.
Sie können zwei Dateien in eine verbundene Ausgabedatei sortieren, wie:
sort $opts file1 file2 >output_file
Wenn Sie die Ausgabe auf Ihrer Shell sehen möchtenstdout
UndSpeichern Sie die Ergebnisse in einer Ausgabedatei und verwenden Sie dann tee
:
sort $opts file[12] | tee output_file