在cygwin中使用sed删除javascript原型

在cygwin中使用sed删除javascript原型,javascript,regex,sed,cygwin,Javascript,Regex,Sed,Cygwin,如何从下面的代码中删除listInfo原型和logInfo对象 我的问题是listInfo原型,我似乎找不到一种方法来删除结束括号。其他所有东西都很容易找到和移除 var ePlug = (function (undefined) { var logInfo, logErrors, logWarnings, hasError, version; function ePlug(options) { this.version = "0.1 Alpha";

如何从下面的代码中删除listInfo原型和logInfo对象

我的问题是listInfo原型,我似乎找不到一种方法来删除结束括号。其他所有东西都很容易找到和移除

var ePlug = (function (undefined) {
    var logInfo, logErrors, logWarnings, hasError, version;

    function ePlug(options) {
        this.version = "0.1 Alpha";
        this.logInfo = [];
        this.logErrors = [];
        this.logWarnings = [];

        this.logInfo.push('Setting options start.');
        options = options || {};

        this.validate(options.one, 'string', 'one provided is not valid.');
        this.validate(options.two, 'boolean', 'two provided is not valid.');

        if(this.hasError !== true) {
            options.one = typeof options.one === 'string' ? options.one : 'string';
            options.two = typeof options.two === 'boolean' ? options.two : true;

            this.logInfo.push('Setting options end.');
            this.options = options;
        }
        else {
            this.logErrors.push('Setting options error.');
        }
    }

    ePlug.prototype.listInfo = function () {
        return this.logg(this.logInfo);
    };

    ePlug.prototype.listErrors = function () {
        return this.logg(this.logErrors);
    };

    ePlug.prototype.listWarnings = function () {
        return this.logg(this.logWarnings);
    };

    ePlug.prototype.logg = function (what) {
        if(typeof window.console === 'undefined') {
           alert(what);
        }
        else {
           console.log(what);
        }
    };

    ePlug.prototype.init = function () {
        if(this.hasError !== true) {
            // start here
        }
    };

    return ePlug;
})();

var eOpt = (function () {
    function options() { return {}; }
    return options;
})();

eOpt.one = 'test';
eOpt.two = false;
var ePlug = new ePlug(eOpt);
ePlug.init();
我希望能够删除下面的代码

ePlug.prototype.listInfo = function () {
    return this.logg(this.logInfo);
};
到目前为止,我只能删除前两行

我不知道如何删除最后一行

GNU的代码:


$cat文件 var ePlug=(函数(未定义){ var logInfo、logErrors、logWarnings、hasrerror、version; 功能电子插头(选件){ this.version=“0.1 Alpha”; this.logInfo=[]; this.logErrors=[]; this.logWarnings=[]; this.logInfo.push('设置选项开始'); 选项=选项| |{}; this.validate(options.one,‘string’,‘提供的一个无效’); this.validate(options.two,‘boolean’,‘提供的两个无效’); if(this.hasError!==true){ options.one=typeof options.one=='string'?options.one:'string'; options.two=typeof options.two==“boolean”?options.two:true; this.logInfo.push('设置选项结束'); this.options=选项; } 否则{ this.logErrors.push('设置选项错误'); } } ePlug.prototype.listInfo=函数(){ 返回this.logg(this.logInfo); }; ePlug.prototype.listErrors=函数(){ 返回this.logg(this.logErrors); }; ePlug.prototype.listWarnings=函数(){ 返回this.logg(this.logWarnings); }; ePlug.prototype.logg=函数(什么){ if(typeof window.console==“未定义”){ 警惕(什么); } 否则{ console.log(什么); } }; ePlug.prototype.init=函数(){ if(this.hasError!==true){ //从这里开始 } }; 回流塞; })(); var eOpt=(函数(){ 函数选项(){return{};} 返回选项; })(); eOpt.one=‘测试’; eOpt.2=假; var ePlug=新ePlug(eOpt); ePlug.init(); $sed'/ePlug.prototype.listInfo=function(){/,/}/d'文件 var ePlug=(函数(未定义){ var logInfo、logErrors、logWarnings、hasrerror、version; 功能电子插头(选件){ this.version=“0.1 Alpha”; this.logInfo=[]; this.logErrors=[]; this.logWarnings=[]; this.logInfo.push('设置选项开始'); 选项=选项| |{}; this.validate(options.one,‘string’,‘提供的一个无效’); this.validate(options.two,‘boolean’,‘提供的两个无效’); if(this.hasError!==true){ options.one=typeof options.one=='string'?options.one:'string'; options.two=typeof options.two==“boolean”?options.two:true; this.logInfo.push('设置选项结束'); this.options=选项; } 否则{ this.logErrors.push('设置选项错误'); } } ePlug.prototype.listErrors=函数(){ 返回this.logg(this.logErrors); }; ePlug.prototype.listWarnings=函数(){ 返回this.logg(this.logWarnings); }; ePlug.prototype.logg=函数(什么){ if(typeof window.console==“未定义”){ 警惕(什么); } 否则{ console.log(什么); } }; ePlug.prototype.init=函数(){ if(this.hasError!==true){ //从这里开始 } }; 回流塞; })(); var eOpt=(函数(){ 函数选项(){return{};} 返回选项; })(); eOpt.one=‘测试’; eOpt.2=假; var ePlug=新ePlug(eOpt); ePlug.init();
花括号
{}
在BRE中不是特殊字符。

我不知道您要删除什么。你试过什么?我在问题后面加了更多的信息。我没有尝试过任何东西,因为我找不到任何关于如何通过引用前一行内容来删除该行的文档。考虑到这一行已经被删除了。如果你想考虑嵌套的括号,这可能是非常困难的(如果不是不可能的话)…我设法清除了所有东西,除了那一点。cygwin中是否有其他实用程序可以实现这一点?
sed '/ePlug.prototype.listInfo = function () {/, /};/d' file
$cat file var ePlug = (function (undefined) { var logInfo, logErrors, logWarnings, hasError, version; function ePlug(options) { this.version = "0.1 Alpha"; this.logInfo = []; this.logErrors = []; this.logWarnings = []; this.logInfo.push('Setting options start.'); options = options || {}; this.validate(options.one, 'string', 'one provided is not valid.'); this.validate(options.two, 'boolean', 'two provided is not valid.'); if(this.hasError !== true) { options.one = typeof options.one === 'string' ? options.one : 'string'; options.two = typeof options.two === 'boolean' ? options.two : true; this.logInfo.push('Setting options end.'); this.options = options; } else { this.logErrors.push('Setting options error.'); } } ePlug.prototype.listInfo = function () { return this.logg(this.logInfo); }; ePlug.prototype.listErrors = function () { return this.logg(this.logErrors); }; ePlug.prototype.listWarnings = function () { return this.logg(this.logWarnings); }; ePlug.prototype.logg = function (what) { if(typeof window.console === 'undefined') { alert(what); } else { console.log(what); } }; ePlug.prototype.init = function () { if(this.hasError !== true) { // start here } }; return ePlug; })(); var eOpt = (function () { function options() { return {}; } return options; })(); eOpt.one = 'test'; eOpt.two = false; var ePlug = new ePlug(eOpt); ePlug.init(); $sed '/ePlug.prototype.listInfo = function () {/, /};/d' file var ePlug = (function (undefined) { var logInfo, logErrors, logWarnings, hasError, version; function ePlug(options) { this.version = "0.1 Alpha"; this.logInfo = []; this.logErrors = []; this.logWarnings = []; this.logInfo.push('Setting options start.'); options = options || {}; this.validate(options.one, 'string', 'one provided is not valid.'); this.validate(options.two, 'boolean', 'two provided is not valid.'); if(this.hasError !== true) { options.one = typeof options.one === 'string' ? options.one : 'string'; options.two = typeof options.two === 'boolean' ? options.two : true; this.logInfo.push('Setting options end.'); this.options = options; } else { this.logErrors.push('Setting options error.'); } } ePlug.prototype.listErrors = function () { return this.logg(this.logErrors); }; ePlug.prototype.listWarnings = function () { return this.logg(this.logWarnings); }; ePlug.prototype.logg = function (what) { if(typeof window.console === 'undefined') { alert(what); } else { console.log(what); } }; ePlug.prototype.init = function () { if(this.hasError !== true) { // start here } }; return ePlug; })(); var eOpt = (function () { function options() { return {}; } return options; })(); eOpt.one = 'test'; eOpt.two = false; var ePlug = new ePlug(eOpt); ePlug.init();