我想在发布时运行一个脚本,用一个完整的域路径替换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
答案 0 :(得分:4)
试试这个
sed "s|\(url(['\"]\?\)\(/[^)]*\)|\1$STATIC_HOST\2|g" main.css
只有在确定结果与您相符时才设置-i选项 寻找。
答案 1 :(得分:0)
|url\(['\"]?([^'\":)]+)['\"]?\)|url($STATIC_HOST\1)|g
冒号将阻止“http:// ...”,如网址