2011-02-05 3 views
5

이것은 당신을위한 하나의 전문가입니다. 나는 이것을 완전히 분해 할 sed에 대해 충분히 알지 못합니다. 그것은 표준 리눅스 배포판으로 작성되었으며 OSX에서 실행해야합니다.debian에서 OSX로 sed 명령을 이식하는 데 도움이 필요합니다.

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

우선 r 플래그가 sed의 OSX 버전에는 존재하지 않습니다. 나는 그 등가물이 -E라고 생각했다. 그래서 바뀌었다. 그러나 그 때 나는 얻는다 :

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

감사합니다!

+0

Dangit, 내가 잘못된 질문에 닫습니다 투표했다. 이 질문에 가까운 투표를 무시하고 대신 [다른 하나] (http://stackoverflow.com/questions/4904572/)를 dup로 닫으십시오. –

답변

9

OS X sed 여러 명령이 세미콜론을 사용하여 함께 실행되거나 중괄호로 그룹화되는 것을 좋아하지 않습니다 (사용자가 소유하고있는 명령에는 필요하지 않음). 이 시도 : 여러 명령으로 구성된 sed 스크립트가있는 경우

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

, 당신은 -e를 사용하여 헤어지게해야합니다 :

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

그랬어! 감사. – pocketfullofcheese

0

-r은 확장 정규 표현식 세트를 사용하며 OSX 버전에서 지원하지 않는 것을 사용하고 있습니다. MacPorts 또는 Fink를 사용해보십시오 - 그들은 GNU sed 포트를 가지고 있습니다. 또는 소스를 직접 다운로드하고 컴파일 할 수 있습니다.

관련 문제