Pal*_*han 5 bash io-redirection
如果我有一个进程,a.out我可以./a.out | grep foo看到由foo过滤的a.out的stdout.我也可以说./a.out 2>&1 | grep foo看到错误和错误都被foo过滤掉了.使用该tee命令,我可以将stdout发送到终端和可能的文件输出.但有没有办法分别过滤这些?如:
./a.out | tee grep foo file.txt
Run Code Online (Sandbox Code Playgroud)
但是这样的东西file.txt被过滤以匹配foo但不是我在屏幕上看到的......或者更好的是我在屏幕上看到的被baz过滤而不是foo?如果没有办法在bash中这样做我会写自己的"发球台",但我想有一些方法......
非常简单,只需使用文件句柄的进程替换即可:
./a.out | tee >(grep foo > out.txt) | grep baz
Run Code Online (Sandbox Code Playgroud)
另请注意,tee可以接受任意数量的参数,因此您可以执行以下操作:
./a.out | tee >(grep foo > foo.txt) >(grep bar > bar.txt) [etc]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1053 次 |
| 最近记录: |