我试图从我的JS文件中删除所有我的console.log,console.dir等,然后用YUI(在osx上)缩小它.
我为控制台语句获得的正则表达式如下所示:
console.(log|debug|info|warn|error|assert|dir|dirxml|trace|group|groupEnd|time|timeEnd|profile|profileEnd|count)\((.*)\);?
如果我用RegExr测试它就可以了.
但它不适用于sed.
为了让这个工作,我需要改变什么?
sed 's/___???___//g' <$RESULT >$RESULT_STRIPPED
更新
得到第一个答案后我试过了
sed 's/console.log(.*)\;//g' <test.js >result.js
这是有效的,但是当我添加OR时
sed 's/console.\(log\|dir\)(.*)\;//g' <test.js >result.js
它不会取代“日志”:
解决方法
你的原始表达看起来很好.对于扩展正则表达式,您只需将-E标志传递给sed:
sed -E 's/console.(log|debug|info|...|count)\((.*)\);?//g'
在man re_format中解释了这些类型的正则表达式之间的区别.说实话,我从来没有读过那个页面,而只是在事情没有按预期工作时简单地使用-E. =)