我希望有一个perl表达式从命令行运行,以删除大写括号之间的额外行:
// some code
}
<-- empty line to remove
}
// more code
答案 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,所以我不介意有人偷了这个模式来写一个完整的答案。