2011-02-05 39 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的端口。或者你可以直接下載和編譯源代碼。