用于删除JS文件中嵌套的console.log的Bash脚本

时间:2017-08-22 03:07:01

标签: javascript regex bash

我搜索并尝试了许多问题中提到的方法,但所有方法都只考虑简单的用例。我的问题是删除所有以下案例的console.log('some data')

我需要一个bash脚本正则表达式删除console.log()以下并保持其余内容不变。

console.log('Some text', variable);

console.log('some text with (a) bracket');

function myfuncton(console.log('some text with covering bracket'));function myfuncton();

注意:在最后一个示例中,所有内容都是单行,没有任何空格。

我正在尝试使用以下正则表达式,但它会移除console.log右括号前面的所有括号。我知道原因,但无法弄清楚正则表达式。

SEARCH_STRING="(\/\/)*console.(log|info|warn)\((.*)\)?"

我是否需要使用其他方法,或者可以使用正则表达式完成。

2 个答案:

答案 0 :(得分:0)

此作业的正则表达式为poor tool

您想使用abstract syntax tree

https://github.com/sindresorhus/strip-debug

答案 1 :(得分:0)

如果您的所有console.log次出现都采用问题中描述的形式,则可以使用console\.(?:log|info|warn)\('[^']*'(?:,[^)]*)?\);?这样的正则表达式,但Seth Holladay的方法确实更安全。