我想运行一个简单的命令,将绝对路径替换为CSS文件中的相对路径,如下所示:
sed -i 's/\/fonts/../fonts/' /Users/sergeybasharov/WebstormProjects/snap/compiled/Content/stylesheets/style.css
它抛出了这个
sed: 1: "/Users/sergeybasharov/W ...": bad flag in substitute command: 'b'
这个简单的脚本有什么问题?
答案 0 :(得分:47)
在您的命令中s/\/fonts/../fonts/
被视为-i
选项的参数(用于备份文件的后缀),并且filename参数被视为编辑命令。
您需要指定禁用备份文件创建:
sed -i '' ...
在你的例子中:
sed -i '' 's/\/fonts/../fonts/' /Users/sergeybasharov/WebstormProjects/snap/compiled/Content/stylesheets/style.css
计算机是愚蠢的,他们不会通过上下文来解决问题,所以他们无法分辨出以s/
开头的东西显然是编辑命令,而不是后缀。< / p>
答案 1 :(得分:11)
sed -i 's/\/fonts/../fonts/'
不是有效的sed命令,请尝试sed -i 's#/fonts#../fonts#'
答案 2 :(得分:11)
我遇到了类似的问题。您可以在Mac中安装GNU版本的sed,名为gsed,并使用标准Linux语法进行使用。
为此,通过运行sudo port install gsed,使用端口安装gsed(如果你没有,请在http://www.macports.org/获取)。然后,您可以运行gsed -i的/ old_pattern / new_pattern / g'*