我在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文件,如您在图中所示。