仅当两个模式都匹配时,如何删除连续的2行

让我们考虑这个简单的文件:

{
bla bla
bla bla bla
}
{
bla bla
bla bla bla
}
bla bla
bla bla bla

我只需要删除那些连续的行:

}
{

结果应该是:

{
bla bla
bla bla bla
bla bla
bla bla bla
}
bla bla
bla bla bla

我尝试了以下方法:

sed -e '/^}$/,/^{$/d' file

不幸的是,最后一个大括号和剩余的行已被删除:

{
bla bla
bla bla bla
bla bla
bla bla bla

有什么建议吗?

如有必要,我愿意接受任何涉及其他工具(例如 awk/perl/...)的简单解决方案。

回答

你可以使用这个sed

sed '/^}$/ { N; /n{$/ d; }' file

{
bla bla
bla bla bla
bla bla
bla bla bla
}
bla bla
bla bla bla

内联保存更改:

sed -i.bak '/^}$/ { N; /n{$/ d; }' file
sed -i.bak '/^}$/ { N; /n{$/ d; }' file

或者,这awk也可以:


以上是仅当两个模式都匹配时,如何删除连续的2行的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>