sed注释掉具有特定字体系列的css文件
我一直在寻找一种方法来注释掉sed注释掉具有特定字体系列的css文件,css,fonts,sed,multiline,Css,Fonts,Sed,Multiline,我一直在寻找一种方法来注释掉.css文件,该文件可能在@font-face、#id、选择器和/或.class中指明了某个字体系列。如果使用/foobar/a\(append)和/foobar/I\(insert)将所有内容都放在一行上,我可以使用sed执行此操作。但是,如果所有内容都放在多行上,那么执行此操作的最佳方法是什么 示例: 之前 @font-face { font-family: "foobar"; src: url(fonts/foobar.ttf); } h1 {
.css
文件,该文件可能在@font-face
、#id
、选择器和/或.class
中指明了某个字体系列。如果使用/foobar/a\
(append)和/foobar/I\
(insert)将所有内容都放在一行上,我可以使用sed
执行此操作。但是,如果所有内容都放在多行上,那么执行此操作的最佳方法是什么
示例:
之前
@font-face {
font-family: "foobar";
src: url(fonts/foobar.ttf);
}
h1 {
font-family: "foobar";
}
.foobar {
font-family: "foobar";
}
最终结果:
/* @font-face {
font-family: "foobar";
src: url(fonts/foobar.ttf);
} */
/* h1 {
font-family: "foobar";
} */
/* .foobar {
font-family: "foobar";
} */
可以用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
这可能适用于您(GNU-sed):
+1、这个想法很聪明。建议通过
s!*!/*&*/!”更改replace命令代码>,将字符替换为/
sed '/{/!b;:a;$!N;/}/!ba;/font-family:\s*"foobar";/s/.*/\/* & *\//' file