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

时间:2015-12-17 13:08:20

标签: linux replace find sublimetext2

我必须从一个巨大的项目中删除所有font-family CSS delcarations,有内联CSS,SASS和常规CSS文件。

我开始使用grep来注释掉这些行,因为我觉得知道定义了什么字体会很有用。

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

在整个网站上有大约4000个font-family声明,我的计划是使用grep替换我在Sublime的前几百个查找行中找到的所有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' @

2 个答案:

答案 0 :(得分:0)

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

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

我发布了一个单独的正则表达式问题answered here

答案 1 :(得分:0)

要排除已注释掉的font-family匹配项,您可以使用负向lookbehind(例如参见http://www.regular-expressions.info/lookaround.html)。即你会搜索

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

此外,可能更容易找到和替换内容的工具。例如在记事本++中,按&#34; Strg + F&#34;,然后选择选项卡&#34;在文件中查找&#34;,选择要替换内容的目录,选择toogle按钮&#34 ;正则表达式&#34;并为&#34;找到什么:&#34;输入

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

和&#34;替换为:&#34;输入

/*$0*/

并说出替换文件。希望有所帮助。