2013-08-21 18 views
0

我發現某些命令中的某些行是「不可修復的」。一個很好的例子,如果你有一個Git倉庫:grep/sed無法獲得的Bash/Shell輸出

git ls-remote | grep inexistent-match 

它返回,反正一條第一線 「從[email protected]:[...]」(或類似的東西)。

我甚至不知道它是什麼,所以我很抱歉,如果一個線程已經存在。

我該如何grep/sed這些第一個輸出?

謝謝你們!

回答

4

你只grepping stdout當一些數據將stderr

嘗試git ls-remote 2>&1 | grep inexistent-match

2>&1將重定向stderrstdout

+0

哇!謝謝!它很快......任何進一步的閱讀/參考? –

+0

你可以做比看http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html#toc3 –

0

試試這個:

$ git ls-remote > /dev/null 

無法制止的線路仍然顯示出來?試試這個:

$ git ls-remote 2> /dev/null 

難道ungrepable線消失?

如果是這樣,Oliver Matthews是正確的。

+0

更糟糕,不禁要問這是如何彌補答案。 *請不要打擾解釋。* – devnull

+0

這將顯示OP是否看到實際上在STDERR上。程序總是有機會打開另一個FD並打印出來。我們遇到了這個問題,我們試圖對輸出進行grep,並發現該程序正在將它們打印到FD4。 –