在 Linux / Sublime 上的所有文件中搜索未注释的字符串

Search for uncomented string in all files on Linux / Sublime

我必须从一个巨大的项目中删除所有字体系列 CSS 声明,有内联 CSS、SASS 和常规 CSS 文件。

我开始使用 grep 注释掉这些行,因为我觉得了解定义的字体会很有用。

我这样做的方法是在 Sublime 中搜索 font-family: 并使用 grep 替换我在 sublime 中找到的字符串,例如:将 font-family: Arial; 替换为 /* font-family: Arial; */

整个网站大约有4000个font-family的声明,我的计划是用grep替换我在Sublime中前几百行find中找到的所有font-family:声明,然后再搜索只找到没有被评论的。

像这样,grep 将处理大多数情况,我重复此过程的次数越多,未注释的字体声明就越少。

问题是我需要使用 sublime 或 linux 来搜索所有未注释的 font-family: 声明。或者换句话说,查找包含此字符串且前面没有 /* 的所有文件。

有什么想法吗?或者其他解决方案?

这是我使用的 grep 命令,以防有人需要它:

grep -rli 'font-family:Helvetica,Arial,sans-serif;' * | xargs -i@ sed -i 's/font-family:Helvetica,Arial,sans-serif;/\/* font-family:Helvetica,Arial,sans-serif; *\//g' @

我使用 Sublime Text 2,CTRL+SHIFT+F 然后选中区分大小写按钮旁边的 "regular expression" 按钮并使用此正则表达式:

https://regex101.com/r/pU0bB3/2

我发布了一个单独的正则表达式问题,得到了

要排除已被注释掉的字体系列的匹配项,您可以使用负向回顾(参见示例 http://www.regular-expressions.info/lookaround.html)。 IE。你会搜索

(?<!/\*)font-family\s*:[^;]+;

此外,可能有更简单的工具来查找和替换内容。例如在记事本++中,按"Strg+F",然后select选项卡"Find in files",select要替换内容的目录,select工具按钮"Regular expressions" 并为 "Find what:" 输入

(?<!/\*)font-family\s*:[^;]+;

并为 "Replace with:" 输入

/*[=12=]*/

并说在文件中替换。希望对您有所帮助。