sed用某些font-family注释掉css文件

时间:2014-02-11 20:05:34

标签: css fonts sed multiline

我一直在寻找一种方法来评论.css文件,该文件可能在@font-face#id,选择器和/或{{1}中显示某个字体系列}}。我可以使用.class执行此操作,如果所有内容都在sed(追加)和/foobar/ a\(插入)的一行上,但如果所有内容都在多行上,那么最好的方法是什么?

示例:

之前

/foobar/ i\

最终结果:

@font-face {
    font-family: "foobar";
    src: url(fonts/foobar.ttf);
}

h1 {
       font-family: "foobar";
}

.foobar {
    font-family: "foobar";
}

2 个答案:

答案 0 :(得分:2)

这可能适合你(GNU sed):

sed '/{/!b;:a;$!N;/}/!ba;/font-family:\s*"foobar";/s/.*/\/* & *\//' file

答案 1 :(得分:1)

可以使用perl和awk

perl -00 -lpe '$_ = "/* $_ */" if /font-family:\s+.foobar/' file
awk -v RS= '/font-family:[[:blank:]]+.foobar/ {$0 =  "/* " $0 " */"} 1' file

这两种方法的工作方式相同:逐段读取文件(空白行分隔),测试正则表达式,如果找到则添加注释标记。

要在原地编辑文件,您可以使用

perl -i ...(as above)...

awk ...(as above)... > tmpfile && mv tmpfile file