Tee kullanma konusunda fazla deneyimim yok, bu yüzden umarım bu çok basit değildir.
Bu sorunun cevaplarından birini görüntüledikten sonra garip bir beheviour ile karşılaştım tee
.
İlk satırı ve bulunan bir satırı çıkarmam için bunu kullanabilirim:
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
Ancak, bu ilk kez (zsh olarak) sonuç yanlış sırada, sütun başlıkları grep sonuçlarının altında idi (ancak yine de olmadı), bu yüzden etrafındaki komutları değiştirmeye çalıştım:
ps aux | tee >(grep syslog) | head -n1
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
Sadece ilk satır yazdırılır, başka bir şey kalmaz Grep'e yönlendirmek için tee'yi kullanabilir miyim, yoksa bunu yanlış mı yapıyorum?
Bu soruyu yazarken, ikinci komut aslında benim için bir kez çalıştı, tekrar beş kez çalıştırdım ve sonra bir satır sonucuna geri döndüm. Bu sadece benim sistemim mi? (Tmux içinde zsh kullanıyorum).
Son olarak, neden ilk komutla "grep syslog" bir sonuç olarak gösterilmiyor (tek bir sonuç var)?
Kontrol için burada grep olmadan 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
Güncelleme: Görünüşe göre head tüm komutun kısalmasına neden oluyor (aşağıdaki cevapta belirtildiği gibi), aşağıdaki komut şimdi aşağıdakileri döndürüyor:
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'
.