bash – 使用sed在匹配文本块后插入一行

我尝试使用sed在以下文件中的[Block B]之后插入一行:

[Block A]  
line 1  
line 2  

[Block B]  
line 1  
line 2  

[Block C]  
line 1  
line 2  

我用的命令:

sed '/\[Block B\]/,/^$/a\inserted line' file

正确/期望的结果应该是:

[Block B]  
line 1  
line 2  
inserted line  

但是,我得到了这个:

[Block B]  
inserted line  
line 1  
inserted line  
line 2  
inserted line  

请告诉我如何使用sed获得所需的结果.谢谢!

最佳答案
sed -e '/\[Block B\]/{:a;n;/^$/!ba;i\inserted line' -e '}'

转载注明原文:bash – 使用sed在匹配文本块后插入一行 - 代码日志