使用grep管道错误消息

mar*_*eks 2 grep stderr piping

我有一个失败的脚本,因为缺少一些文件.

运行脚本并将其管道连接到grep

$ ./adder | grep Error
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

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
Run Code Online (Sandbox Code Playgroud)

和不同文件的类似输出

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

这是为什么?

pio*_*kuc 5

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

$ ./adder 2>&1 | grep Error
Run Code Online (Sandbox Code Playgroud)