我没有使用tee的丰富经验,所以我希望这不是很基本。
查看此问题的答案之一后,我遇到了一个奇怪的行为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还是以错误的方式进行此操作?
当我键入此问题时,第二个命令实际上对我有用一次,我再次运行了五次,然后返回到一行结果。这就是我的系统吗?(我正在tmux中运行zsh)。
最后,为什么第一个命令没有显示“ grep syslog”结果(只有一个结果)?
为了控制,这里是不带 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'
。