css - 将 url() 相对路径替换为 css 文件中的完整域

标签 css bash sed

我想在发布时运行一个脚本,用完整的域路径替换 css 文件中的所有 url() 声明,因为图像托管在静态 Web 服务器上。

例子

Current:  background-image: url(/images/menu.gif);
Desired:  background-image: url(http://example.com/images/menu.gif);
Current:  background-image: url('/images/menu.gif');
Desired:  background-image: url('http://example.com/images/menu.gif');
Current:  background-image: url("/images/menu.gif");
Desired:  background-image: url("http://example.com/images/menu.gif");

我已经使用 sed 编写了一个 bash 脚本来执行此操作,但它不处理带有引号 url('') 的 url 或已经具有完整路径的 url。

 STATIC_HOST="http://example.com"
 sed -i '' "s|url(\([^)]*\)|url($STATIC_HOST\1|g" main.css

最佳答案

试试这个

sed "s|\(url(['\"]\?\)\(/[^)]*\)|\1$STATIC_HOST\2|g" main.css

仅当您确定结果与您的结果相同时才使用 -i 选项 寻找。

关于css - 将 url() 相对路径替换为 css 文件中的完整域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4694993/

相关文章:

sed - 使用 sed 或 grep 从具有特定 id 的 html 标签之间提取文本

jquery - div 内容宽度的条件

javascript - 使用 jquery 顺利地为每个导航菜单更改站点的背景图像

java - 设置javafx折线图线宽

mysql - 获取列名并将其写入文件

shell - 尝试使用 sed 编辑文件中的信息

regex - 如何使用 sed 进行多种模式替换

html - 选择器第一个 child ,第一个类型不起作用

linux - 创建锁定文件时防止竞争条件

bash - 如何迭代 Bash 脚本中的参数