2011-02-05 95 views
5

这是一个给你sed gurus的地方。我真的不知道sed是否完全分开。它写在一些标准的Linux发行版上,我需要它在OSX上运行。需要帮助从debian移植一个​​sed命令到OSX

COMPILE_FILES=$(sed -nr '/<script type="text\/javascript"/ { s%^.*src="\{\$baseUrl\}/([^"]+)".*$%\1%p }' templates/common/minifiedScripts.tpl) 

首先是r标志在OSX版本的sed中不存在。我认为相当于-E,所以改变了它。但后来我得到:

sed: 1: "/<script type="text\/ja ...": bad flag in substitute command: '}' 

谢谢!

+0

Dangit,我投来关闭错误的问题。请忽略我在这个问题上的近距离投票,并将[另一个](http://stackoverflow.com/questions/4904572/)作为dup来代替。 – 2011-02-05 01:46:43

回答

9

OS X sed不喜欢多个命令一起使用分号一起运行或分组在花括号中(这在命令中不是必需的)。试试这个:

COMPILE_FILES=$(sed -n -E '/<script type="text\/javascript"/ s%^.*src="\{\$baseUrl\}/([^"]+)".*$%\1%p' templates/common/minifiedScripts.tpl) 

如果你有一个sed脚本,由多个命令,你必须打破他们使用-e

sed -n -E -e '/match/ {' -e 's/foo/bar/' -e 's/baz/qux/' -e 'p' -e '}' 
+0

做到了!谢谢。 – pocketfullofcheese 2011-02-05 01:54:45

0

-r使用扩展正则表达式集,并且使用的是OSX版本不支持的一个。尝试MacPorts或Fink - 他们有gnu sed的端口。或者你可以直接下载和编译源代码。