删除大括号之间多余的空行

Remove extra empty lines between curly brackets

在这种情况下,我想要一个从命令行运行的 perl 表达式,以删除大括号之间的额外行:

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

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

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

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

如果即使缩进:

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

如果 "empty" 行或第一个大括号之后可能有额外的空格:

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