Gibt es ein Tool, das Eingaben aus mehreren Dateien oder Pipes in stdout schreibt, ohne Lesevorgänge zu blockieren, sodass einzelne Eingabezeilen intakt bleiben? Grundsätzlich möchte ich eine Reihe von Eingängen auf einen Ausgang multiplexen, ohne die Leitungen zu beschädigen.
$ combine file1 <(prog2) ... > nice-output.txt
- Die Reihenfolge der Ausgabe ist mir egal
- Es sollte nicht blockieren, solange einige Eingaben Daten enthalten
- Es sollte effizient sein (dh ich kann Ihren Perl-Einzeiler ablehnen;)
-L
, um einen Befehl auszuführen, die Ausgabe mit dem aktuellen Stream zusammenzuführen und-a
die Ausgabe in eine Datei zu schreiben. Ich werde morgen mehr suchen. Wenn Sie ein detaillierteres Beispiel geben, werde ich versuchen, es zu bearbeiten.Wenn die Prozesse die Zeilen in einem einzigen
write
Aufruf schreiben , für den die Prozesse die Zeilenpufferung verwenden müssen (normalerweise deaktiviert, wenn ihre Standardausgabe kein Terminal ist), können Sie sie alle auf eine Pipe verweisen.Wenn die Prozesse beim Schreiben in ein Terminal nur eine Zeilenpufferung durchführen, ist die Verwendung einfach
script
. Es ist etwas ungeschickt: Es kann nur in eine Datei schreiben.Wenn die Programme lange Zeilen schreiben oder einfach keine Zeilenpufferung verwenden, funktioniert dieser Ansatz nicht. Sie benötigen ein Kollektorprogramm, das Zeilen von jedem Eingang separat liest und puffert und die Synchronisation an Zeilenenden durchführt. Es gibt kein Standarddienstprogramm mit dieser Funktionalität. Ich stimme Calebs Vorschlag von zu
multitail
.Hier ist ein Python-Skript, das Zeilen liest, die von mehreren Befehlen erzeugt wurden, und sie in der Standardausgabe ausspuckt, ohne eine Zeile aufzubrechen. Ich habe es nicht viel getestet, also Vorbehalt Benutzer. Ich habe es überhaupt nicht bewertet.
Beispielnutzung:
quelle
Ja, Multitail scheint an die Vorstellung eines "Fensters" als Teilmenge eines Terminals gebunden zu sein. Ich konnte es nicht dazu bringen, als Pipeline-Komponente gut zu spielen.
So sieht aus wie wir hafta diesem selbst tun Risse Knöchel
Ahhh das fühlte sich gut an.
(Hinweis: Es wurde an ungefähr zwei Eingabesätzen getestet. Fehler können vorhanden sein oder nicht.)
quelle