删除花括号之间的额外空行

时间:2015-01-01 12:57:38

标签: regex perl

我希望有一个perl表达式从命令行运行,以删除大写括号之间的额外行:

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

2 个答案:

答案 0 :(得分:3)

如果您只希望它在第二个大括号位于该行的开头时执行此操作:

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

即使它是缩进的:

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

如果&#34;空的&#34;可能有额外的空格。在第一个大括号后面的行:

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

答案 1 :(得分:2)

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