我的脚本失败了,因为缺少某些文件。
运行脚本并将其传递给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
不起作用。
为什么?
答案 0 :(得分:5)
您需要将标准错误流(数字代码:2)从管道中的第一个命令重定向到标准输出流(数字代码:1),如下所示:
$ ./adder 2>&1 | grep Error
答案 1 :(得分:2)
像piokuc的建议,将stderr与stdout结合起来。但是,我认为你正在寻找一个更好的grep调用:
./adder 2>&1 | grep "^Error" | grep -oP '[^ ]*\.root'