2011-03-08 48 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 

同样的问题?