使用未注释的“console.log”字符串grep文件

时间:2012-10-23 18:29:10

标签: regex unix grep

我需要返回包含未注释字符串console.log的目录中的所有文件。所以我想我应该搜索换行符和//字符串之间没有字符串console.log的任何行。

此命令返回已注释和未注释的console.log。我想排除注释console.log的实例。

grep -H -r  "^.*[^//].*console\.log" /var/www/vhosts/mysite.com

我需要的命令会匹配这些行:

var num = 0;  console.log(num);
alert('some text'); console.log('anything');
  console.log();

但不匹配这些行:

var num = 0; // console.log(num);
//alert('some text'); console.log('anything');
  // console.log();

4 个答案:

答案 0 :(得分:2)

<击> 使用-L开关

grep -rL '//.*console\.log' directory

<击>

更新

grep -rlP '^(?!.*//.*console\.log)(?=.*console\.log)' directory

答案 1 :(得分:0)

列出所有文件的解决方案,其中包含未注释的console.log

grep -rlL "\/\/.*console\.log" /var/www/vhosts/mysite.com

答案 2 :(得分:0)

您可以使用-v中的grep开关来使用反向匹配。

grep -H -r "console\.log" /var/www/vhosts/mysite.com | grep -v "//"

答案 3 :(得分:0)

扩展Ωmega的答案:为了多行评论(/* console.log(); */),另外使用:

^(?!.*//.*console\.log)^(?!.*/\*.*console\.log)(?=.*console\.log)