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 に答える