重定向std_out,std_err,带(out)grep



我在linux中的重定向内容有一些麻烦,这里是一个小的示意图来说明目标,比单词(我希望(

更好
+------------+                              +----------------+
|   std_out  +----------+------------------>+     log.log    |
+------------+          |                   +----------------+
                        |
                        |                   +----------------+
                        +----------------->>+                |
                                            |   histo.log    |
                        +----------------->>+                |
                        |                   +----------------+
                        |
                        |
 +------------+         |   grep -v "exp"   +----------------+
 |   std_err  +---------+------------------>+   error.log    |
 +------------+                             +----------------+

我想用脚本的输出来执行此操作。我成功地使用grep进行log.log和error.log,

./script.sh >log.log 2> >(grep -v "Expression" > error.log )

但是我在histo.log上遇到了麻烦,它应该在其中添加(我的意思是>>或TEE -A -a>(std_out和std_err(没有GREP(,而我不太了解有关重定向的高级内容。

如果有人有想法解决我的问题,我将感谢:(

这是输出过程替换的可怕外观:

$ cat driver.sh
echo line 1 to stdout
echo line 1 to stderr >&2
echo line 2 to stderr is expected >&2
echo line 3 to stderr >&2
$ sh driver.sh > >(tee -a histo.log > log.log) 2> >(tee -a histo.log | grep -v exp > error.log)
$ cat log.log
line 1 to stdout
$ cat histo.log
line 1 to stdout
line 1 to stderr
line 2 to stderr is expected
line 3 to stderr
$ cat error.log
line 1 to stderr
line 3 to stderr

这将附加到histo.log,但是 overwrite log.log和error.log文件,如您在图中所示。

相关内容

  • 没有找到相关文章

最新更新