2015-01-01 252 views
1

之间多余的空行,我想有一个Perl表达式来运行命令行删除大括号中的额外线在这种情况下:删除花括号

// some code 
    } 
     <-- empty line to remove 
} 
// more code 
+0

可能重复的[Perl - 无法清除空白行] (http://stackoverflow.com/questions/18102670/perl-cant-strip-blank-lines) – geedubb

+0

它似乎没有重复,特别是因为用户正在要求在perl中的解决方案从命令行运行。 –

回答

3

如果你只希望它这样做时,第二个花括号是在该行的开头:

perl -0777 -pi -we's/}\n\n}/}\n}/g' filename 

如果即使它是缩进的:

perl -0777 -pi -we's/}\n(\n[^\S\n]*(?=}))/}$1/g' filename 

如果有可能在“空行”或第一个花括号之后多余的空格:

perl -0777 -pi -we's/(}[^\S\n]*\n)[^\S\n]*\n([^\S\n]*(?=}))/$1$2/g' filename 
+0

最后一个是我正在寻找的,谢谢。 – alcala

2

您可以使用正则表达式来代替(?<=})\s*\n(?:\s*\n)+(\s*})\n$1。不幸的是,我不知道Perl,所以我不介意是否有人偷了这个模式来写一个完整的答案。