2015-01-01 251 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,所以我不介意是否有人偷了這個模式來寫一個完整的答案。