Ich habe nicht viel Erfahrung mit Tee, deshalb hoffe ich, dass dies nicht sehr einfach ist.
Nachdem ich eine der Antworten auf diese Frage gesehen hatte, stieß ich auf ein seltsames Verhalten mit tee
.
Damit ich die erste Zeile und eine gefundene Zeile ausgeben kann, kann ich Folgendes verwenden:
ps aux | tee >(head -n1) | grep syslog
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
syslog 806 0.0 0.0 34600 824 ? Sl Sep07 0:00 rsyslogd -c4
Als ich dies zum ersten Mal ausführte (in zsh), war das Ergebnis in der falschen Reihenfolge. Die Spaltenüberschriften befanden sich unterhalb der grep-Ergebnisse (dies geschah jedoch nicht erneut). Daher habe ich versucht, die Befehle zu vertauschen:
ps aux | tee >(grep syslog) | head -n1
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
Es wird nur die erste Zeile gedruckt, sonst nichts! Kann ich tee verwenden, um nach grep umzuleiten, oder mache ich das falsch?
Während ich diese Frage eintippte, funktionierte der zweite Befehl tatsächlich einmal für mich. Ich führte ihn fünfmal aus und kehrte dann zum Ergebnis einer Zeile zurück. Ist das nur mein System? (Ich lasse zsh in tmux laufen).
Schließlich, warum wird mit dem ersten Befehl "grep syslog" nicht als Ergebnis angezeigt (es gibt nur ein Ergebnis)?
Zur Kontrolle dient hier das grep ohne das tee
ps aux | grep syslog
syslog 806 0.0 0.0 34600 824 ? Sl Sep07 0:00 rsyslogd -c4
henry 2290 0.0 0.1 95220 3092 ? Ssl Sep07 3:12 /usr/bin/pulseaudio --start --log-target=syslog
henry 15924 0.0 0.0 3128 824 pts/4 S+ 13:44 0:00 grep syslog
Update: Es scheint, dass head den gesamten Befehl abschneidet (wie in der Antwort unten angegeben). Der folgende Befehl gibt nun Folgendes zurück:
ps aux | tee >(grep syslog) | head -n1
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
syslog 806
ps aux | sed -n -e '1p' -e '/syslog/p'
.