Saya tidak punya banyak pengalaman menggunakan tee, jadi saya harap ini tidak terlalu mendasar.
Setelah melihat salah satu jawaban untuk pertanyaan ini, saya menemukan beheviour aneh dengan tee
.
Agar saya dapat menampilkan baris pertama, dan baris yang ditemukan, saya dapat menggunakan ini:
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
Namun, pertama kali saya menjalankan ini (di zsh) hasilnya berada di urutan yang salah, header kolom berada di bawah hasil grep (ini tidak terjadi lagi), jadi saya mencoba untuk menukar perintah di sekitar:
ps aux | tee >(grep syslog) | head -n1
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
Hanya baris pertama yang dicetak, dan tidak ada yang lain! Bisakah saya menggunakan tee untuk mengarahkan ke grep, atau apakah saya melakukan ini dengan cara yang salah?
Ketika saya mengetik pertanyaan ini, perintah kedua sebenarnya bekerja sekali untuk saya, saya menjalankannya lagi lima kali dan kemudian kembali ke hasil satu baris. Apakah ini hanya sistem saya? (Saya menjalankan zsh dalam tmux).
Akhirnya, mengapa dengan perintah pertama adalah "grep syslog" tidak ditampilkan sebagai hasilnya (hanya ada satu hasil)?
Untuk kontrol di sini adalah grep tanpa 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
Pembaruan: Tampaknya head menyebabkan seluruh perintah terpotong (seperti ditunjukkan dalam jawaban di bawah) perintah di bawah ini sekarang mengembalikan yang berikut:
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'
.