2011-03-08 49 views
2

有誰碰巧知道爲什麼會這樣:智能報價問題在Mac

echo "random text error: ‘the text I want’" | sed "s%.*error: ‘\(.*\)’%\1%" 

作品像Linux上的魅力,但掛在Mac OS X上的實現sed的。當我說掛起,我的意思是下降到沒有輸出的下一行,並等待。

我知道實現是不同的,但似乎無法找到具體的原因是什麼。我可以使用Mac OS X的sed實現來執行其他用巧妙的引號(比如用「普通」引用替換它們)。

對於任何有興趣的人來說,這與編譯器錯誤輸出類似。 Mac OS X上的GCC也會在其錯誤消息中輸出智能報價。

+0

當你說它等待,你會得到一個提示?哪個提示? – 2011-03-08 01:09:50

+0

不,只是一個空白的行。以下是響應中的差異:在Linux上:下降到下一行並打印:「我想要的文本」(不帶引號),然後用正常的shell提示下一行。我期望。然而,在Mac上,它只是下到下一行,沒有提示,甚至沒有找到完成的「>」,只是一個空行。我必須按CTRL-C它。 – 2011-03-08 01:16:12

+0

你能把它分開嗎?嘗試'echo「隨機文本錯誤:'我想要的文本'」|貓'看看是否通過一個啞程序管道工作正常的'回聲',然後嘗試'echo foo | sed「s%。*錯誤:'\(。* \)'%\ 1%」'看看'sed'是否處理好字符。 – sarnold 2011-03-08 01:22:36

回答

0

你能變通方法,通過將sed的命令爲「quoted.sed」文件,並將其命名爲

echo "random text error: ‘the text I want’" | sed -f quoted.sed 

同樣的問題?