Non ho molta esperienza nell'uso di tee, quindi spero che questo non sia molto semplice.
Dopo aver visto una delle risposte a questa domanda, mi sono imbattuto in uno strano comportamento tee
.
Per poter visualizzare la prima riga e una riga trovata, posso usare questo:
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
Tuttavia, la prima volta che ho eseguito questo (in zsh) il risultato era nell'ordine sbagliato, le intestazioni di colonna erano al di sotto dei risultati grep (questo non è accaduto ancora), quindi ho provato a scambiare i comandi:
ps aux | tee >(grep syslog) | head -n1
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
Viene stampata solo la prima riga e nient'altro! Posso usare tee per reindirizzare a grep o lo sto facendo nel modo sbagliato?
Mentre stavo scrivendo questa domanda, il secondo comando ha funzionato una volta per me, l'ho eseguito di nuovo cinque volte e poi di nuovo al risultato di una riga. Questo è solo il mio sistema? (Sto eseguendo zsh all'interno di tmux).
Infine, perché con il primo comando "grep syslog" non viene mostrato come risultato (c'è solo un risultato)?
Per controllo ecco il grep senza il 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
Aggiornamento: sembra che head stia causando il troncamento dell'intero comando (come indicato nella risposta di seguito) il comando di seguito restituisce ora il seguente:
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'
.