3

我有一个脚本失败,因为某些文件丢失了。

运行脚本并将其传递给 grep

$ ./adder | grep Error

产生以下输出:

Error in <TFile::ReadBuffer>: error reading all requested bytes from file v2.2_V3_194424_194712/output_853.root, got 0 of 300
Error in <TFile::Init>: v2.2_V3_194424_194712/output_853.root not a ROOT file

以及具有不同文件的类似输出

我想v2.2_V3_194424_194712/output_853.root从这个输出中提取根文件,但是这样做./adder | grep Error | grep .root不起作用。

这是为什么?

4

2 回答 2

5

您需要将标准错误流(数字代码:2)从管道中的第一个命令重定向到标准输出流(数字代码:1),如下所示:

$ ./adder 2>&1 | grep Error
于 2012-08-21T13:16:53.550 回答
4

就像 piokuc 建议的那样,将 stderr 与 stdout 结合起来。但是,我认为您正在寻找更好的 grep 调用:

./adder 2>&1 | grep "^Error" | grep -oP '[^ ]*\.root'
于 2012-08-21T22:14:19.610 回答