Tシャツの使用経験はあまりないので、これがあまり基本的ではないことを願っています。
この質問に対する答えの1つを見た後、私は奇妙な行動に出会いましたtee
。
最初の行と見つかった行を出力するために、これを使用できます:
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
ただし、これを(zshで)初めて実行したとき、結果の順序が間違っていて、列ヘッダーがgrepの結果の下にありました(ただし、これは再び起こりませんでした)。
ps aux | tee >(grep syslog) | head -n1
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
最初の行のみが印刷され、それ以外は何も出力されません!teeを使用してgrepにリダイレクトできますか、それとも間違った方法でこれを行っていますか?
この質問を入力しているときに、2番目のコマンドが実際に1回機能し、5回実行してから1行の結果に戻りました。これは私のシステムですか?(tmux内でzshを実行しています)。
最後に、最初のコマンドで「grep syslog」が結果として表示されないのはなぜですか(結果が1つだけです)。
ここで制御するためのgrepは、 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
更新: headによってコマンド全体が切り捨てられているようです(以下の回答に示されているように)。現在、以下のコマンドは次を返しています。
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'
。