让我们考虑这个简单的文件:
{
bla bla
bla bla bla
}
{
bla bla
bla bla bla
}
bla bla
bla bla bla
Run Code Online (Sandbox Code Playgroud)
我只需要删除那些连续的行:
}
{
Run Code Online (Sandbox Code Playgroud)
结果应该是:
{
bla bla
bla bla bla
bla bla
bla bla bla
}
bla bla
bla bla bla
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
sed -e '/^}$/,/^{$/d' file
Run Code Online (Sandbox Code Playgroud)
不幸的是,最后一个大括号和剩余的行已被删除:
{
bla bla
bla bla bla
bla bla
bla bla bla
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
如有必要,我愿意接受任何涉及其他工具(例如 awk/perl/...)的简单解决方案。
你可以使用这个sed:
sed '/^}$/ { N; /\n{$/ d; }' file
{
bla bla
bla bla bla
bla bla
bla bla bla
}
bla bla
bla bla bla
Run Code Online (Sandbox Code Playgroud)
内联保存更改:
sed -i.bak '/^}$/ { N; /\n{$/ d; }' file
Run Code Online (Sandbox Code Playgroud)
或者,这awk也可以:
sed -i.bak '/^}$/ { N; /\n{$/ d; }' file
Run Code Online (Sandbox Code Playgroud)