2010-01-29 65 views
1

我想在g ++的控制檯輸出中用「on」替換所有「no」。我試圖G ++和sed pipeline

$ g++ | sed -e 's/no/on/g' 

但它顯示

的i686-蘋果darwin9-G ++ - 4.0.1:沒有輸入文件

,而不是

的i686 -apple-darwin9-g ++ - 4.0.1:on輸入文件

回答

6

消息到達標準錯誤,但shell管道操作員將一個進程的標準輸出連接到下一個進程的標準輸入。

改道標準錯誤,使用

$ g++ 2>&1 | sed -e 's/no/on/g' 

$ g++ |& sed -e 's/no/on/g' 

得到

g++: on input files
+0

哇,59秒...謝謝!我不知道如何將錯誤流重定向到標準流。 – Klaus 2010-01-29 21:34:50

+1

'|&'在Bash 4.0中是新的,儘管它已經在其他shell(比如zsh)中使用了更長的時間。 – ephemient 2010-01-29 21:58:11