查找并替换 - 使用 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