2013-02-08 57 views

回答

5

你可以尝试:

./process.sh | { tee /dev/tty | grep foo > output.log; } 

这不输出发送到标准输出,但对TTY 。也许这够好。

,或者你可以这样做:

./process.sh | awk '/foo/{ print > "output.log"} 1' 

它打印的process.sh所有的输出到标准输出,并匹配foo该行被写入文件。

此外,你可以这样做:

mkfifo fifo 
./process.sh | { cat fifo & tee fifo | grep foo > output.log; } 
rm fifo 

可以与/proc文件系统更干净来完成:

./process.sh | { tee /proc/self/fd/6 | grep foo > output.lot; } 6>&1 
2

除了另一种答案,如果你使用它重定向输出到/dev/tty,外壳(和一个操作系统)支持bash风格的过程替换,你可以这样做:

./process.sh | tee >(grep foo > output.log) 
相关问题