【问题标题】:Search for uncomented string in all files on Linux / Sublime在 Linux / Sublime 上的所有文件中搜索未注释的字符串
【发布时间】:2016-03-23 23:14:42
【问题描述】:

我必须从一个庞大的项目中删除所有字体系列 CSS 声明,有内联 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' @

【问题讨论】:

  • 如果您发布了一些您想要更改的行会有所帮助。
  • 例如,我想查找所有“font-family:”但忽略前面有注释标记的任何结果,忽略所有这样的:“/* font-family:”。所以找到所有未注释的字体系列声明。
  • 我正在检查 Sublime 正则表达式,如果我找到方法会回复。

标签: linux replace find sublimetext2


【解决方案1】:

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

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

此外,可能还有更简单的工具可以查找和替换内容。例如在记事本++中,按“Strg+F”,然后选择选项卡“在文件中查找”,选择要替换内容的目录,选择工具按钮“正则表达式”,然后在“查找内容:”中输入

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

对于“替换为:”输入

/*$0*/

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

【讨论】:

  • 这个:^(?:(?!/\*).)*\s*font-family:.* 似乎有效 :)
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-09
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多