2011-02-05 25 views
5

Đây là một trong số các bạn có rất nhiều kinh nghiệm. Tôi thực sự không biết đủ về sed để hoàn toàn tách rời nó. Nó được viết trên một số bản phân phối Linux chuẩn và tôi cần nó để chạy trên OSX.cần trợ giúp chuyển lệnh sed từ debian sang OSX

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

Điều đầu tiên là cờ r không tồn tại trên phiên bản OSX của sed. Tôi nghĩ tương đương là -E, nên thay đổi nó. Nhưng sau đó tôi nhận được:

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

Cảm ơn!

+0

Dangit, Tôi đã bỏ phiếu để đóng vào những câu hỏi sai. Vui lòng bỏ qua phiếu bầu của tôi về câu hỏi này và thay vào đó hãy đóng [cái khác] (http://stackoverflow.com/questions/4904572/) làm một bản sao. –

Trả lời

9

OS X sed không giống như nhiều lệnh chạy cùng nhau bằng dấu chấm phẩy hoặc được nhóm trong dấu ngoặc nhọn (không cần thiết trong lệnh bạn có). Hãy thử điều này:

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

Nếu bạn có một kịch bản sed mà bao gồm nhiều lệnh, bạn sẽ phải phá vỡ chúng bằng cách sử dụng -e:

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

đã làm điều đó! cảm ơn. – pocketfullofcheese

0

-r sử dụng tập hợp biểu thức chính quy mở rộng và bạn đang sử dụng một biểu thức không được phiên bản OSX hỗ trợ. Hãy thử MacPorts hoặc Fink - chúng có các cổng của gnu sed. HOẶC bạn chỉ có thể tải xuống và biên dịch mã nguồn trực tiếp.

Các vấn đề liên quan