2013-04-29 28 views
0

我将所有css文件连接在一起,并将它们缩小并放入dist目录中进行分发。我串联的CSS文件位于各种供应商文件夹中,并且具有相对于其中的css的图像路径。如何使用sed将可分发组件中的相关图像目录替换为所有图像路径?使用sed替换缩小的CSS中的图像路径

在CSS的图像时,一些可能的路径...

background-image: url('test/test1/test.png'); 
background: url("test2/test2.png"); 
background-image: url(test3/test3.png); 
background: url (test4/test4.png); 
background: url(" test5/test5.gif"); 
background: url(test.png); 
+0

我已经试过了sed的url |(。*?。png \)| url(\ 1)| g“style.css ...但是当然不起作用。 – 2013-05-02 02:52:28

+0

是你张贴样本输入或期望输出或其他东西?更新您的问题以清楚地显示具有代表性的样本输入以及该输入的预期输出。 – 2013-05-02 12:53:14

回答

0

尝试以下。适用于您的所有示例。

sed "s#\(url\s*(\s*['\"]\?\)\s*\([^/]\)#\1/DIRECTORY/\2#" <in.css >out.css 

这翻译的意思是

Q1: “URL” - 可选空间 - “(” - 可选空间,可选的报价

Q2:可选空间

Q3:除了从任何字符一个 “/”(以避免更换绝对URL)

然后,如果所有这些匹配,与Q1取代 - “/目录/” - Q3