No tengo mucha experiencia en el uso de tee, así que espero que esto no sea muy básico.
Después de ver una de las respuestas a esta pregunta, me encontré con un extraño comportamiento tee
.
Para poder generar la primera línea y una línea encontrada, puedo usar esto:
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
Sin embargo, la primera vez que ejecuté esto (en zsh) el resultado estaba en el orden incorrecto, los encabezados de columna estaban por debajo de los resultados grep (sin embargo, esto no volvió a ocurrir), así que intenté intercambiar los comandos:
ps aux | tee >(grep syslog) | head -n1
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
¡Solo se imprime la primera línea, y nada más! ¿Puedo usar tee para redirigir a grep, o lo estoy haciendo de manera incorrecta?
Mientras escribía esta pregunta, el segundo comando realmente funcionó una vez para mí, lo ejecuté nuevamente cinco veces y luego volví al resultado de una línea. ¿Es este solo mi sistema? (Estoy ejecutando zsh dentro de tmux).
Finalmente, ¿por qué con el primer comando no se muestra "grep syslog" como resultado (solo hay un resultado)?
Para el control aquí está el grep sin el 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
Actualización: Parece que head está causando que todo el comando se trunca (como se indica en la respuesta a continuación), el siguiente comando ahora devuelve lo siguiente:
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'
.