查找并替换 - 使用 awk 或 sed
find and replace - with awk or sed
我正在使用 Electron 和 ReactJS 编写桌面应用程序来编辑 CSS 文件。
我需要扫描 CSS 寻找 class 选择器,然后清除以下声明块并添加一些新属性。
棘手的部分是匹配选择器中的 class。我需要 class 成为实际目标(不是父对象),但可能有多个逗号分隔的选择器,因此我需要检查所有这些选择器。
例如,
在此文件中,我正在搜索 containerApp class:
.section-main .section-right , .menu .container-manu , .containerApp .container-nav {
背景:黑色;
}
.section-main2 .section-left , .menu .container-manu , .section-group-d .containerApp {
背景:红色;
}
第一个块不匹配,因为 .containerApp 仅被提及为实际目标 .container-nav 的父级。第二个块确实匹配,我想删除背景:红色;并用别的东西代替它。
执行此 CSS 匹配和重写的最佳方法是什么?
如果我正确理解您的要求,.containerApp
需要是选择器的最后一个元素。由于选择器以逗号结尾,或者在大括号处结束,因此需要使用合适的正则表达式:
sed '/\.containerApp *[,{]/s/{[^}]*}/{ my new css rules }/' app.css
我正在使用 Electron 和 ReactJS 编写桌面应用程序来编辑 CSS 文件。
我需要扫描 CSS 寻找 class 选择器,然后清除以下声明块并添加一些新属性。
棘手的部分是匹配选择器中的 class。我需要 class 成为实际目标(不是父对象),但可能有多个逗号分隔的选择器,因此我需要检查所有这些选择器。
例如, 在此文件中,我正在搜索 containerApp class:
.section-main .section-right , .menu .container-manu , .containerApp .container-nav { 背景:黑色; }
.section-main2 .section-left , .menu .container-manu , .section-group-d .containerApp { 背景:红色; }
第一个块不匹配,因为 .containerApp 仅被提及为实际目标 .container-nav 的父级。第二个块确实匹配,我想删除背景:红色;并用别的东西代替它。 执行此 CSS 匹配和重写的最佳方法是什么?
如果我正确理解您的要求,.containerApp
需要是选择器的最后一个元素。由于选择器以逗号结尾,或者在大括号处结束,因此需要使用合适的正则表达式:
sed '/\.containerApp *[,{]/s/{[^}]*}/{ my new css rules }/' app.css