Ich habe ein Skript, das Text ausgibt stdout
. Ich möchte all diese Ausgaben in meinem Terminal sehen und gleichzeitig einige Zeilen filtern und in einer Datei speichern. Beispiel:
$ myscript
Line A
Line B
Line C
$ myscript | grep -P 'A|C' > out.file
$ cat out.file
Line A
Line C
Ich möchte die Ausgabe des ersten Befehls im Terminal sehen und die Ausgabe des zweiten Befehls in einer Datei speichern. Gleichzeitig. Ich habe versucht, mit tee
, aber ohne Ergebnis oder besser mit umgekehrtem Ergebnis .
/dev/stderr
ist üblich./dev/tty
(was bedeutet, das aktuelle Terminal) würde auch hier funktionieren, und es ist Standard .tee /dev/tty
diente wunderbar für meine Anforderung, dasstdout
von einem Skript zum Terminal zu drucken und es auch zu demstdin
von einem anderen Befehl weiterzuleiten! Danke! :-)Oder mit Prozessersetzung (ksh93, zsh oder bash):
Mit zsh:
quelle
/dev/fd/3
ersetzt werden kann>(cat 1>&3)
Hier ist ein anderer Weg mit
sed
:Standardmäßig
sed
druckt jede Zeile so in diesem Fall stdout wird das gleiche sein wie stdin (dh Sie werden die gesamte Produktion von sehenmyscript
auf dem Bildschirm).Darüber hinaus werden alle Linien Anpassung
PATTERN
wirdw
zu Rittenout.file
quelle
Sie haben nicht angegeben, wie Sie den Befehl tee verwendet haben, aber dies sollte funktionieren:
Zumindest hat es vor ein paar Minuten auf meinem Server funktioniert ...
quelle