SED查找第一种图案的线条,然后在第二种图案的线条之前插入一条线条

SED查找第一种图案的线条,然后在第二种图案的线条之前插入一条线条,sed,Sed,示例文件1: //MODIFICATIONS: //comment //comment // </IF> //修改: //评论 //评论 // 示例文件2: MODIFICATIONS: comment without leading // comment without leading // </IF> 修改: 不置可否// 不置可否// 样本文件3 MODIFICATIONS: comment without leading // co

示例文件1:

//MODIFICATIONS:  
//comment  
//comment  
//  
</IF>  
//修改:
//评论
//评论
//  
示例文件2:

MODIFICATIONS:
comment without leading //
comment without leading //
</IF>
修改:
不置可否//
不置可否//
样本文件3

MODIFICATIONS:
comment without leading //
comment without leading //

</IF>
修改:
不置可否//
不置可否//
我需要更新300多个文件,看起来像上面的变化。我认为最简单的解决方案是使用SED命令:

  • 查找以“MODIFICATIONS:”结尾的行(我已经确认“MODIFICATIONS:”在每个文件中只出现一次)
  • 然后查找下一个
    (将会有很多,我只想要第一个),并在这一行之前插入新的注释行
理想情况下,这将能够针对不包含“修改:”的文件运行,并且不会执行任何操作。这些文件位于多个嵌套文件夹中,因此递归运行将有很大帮助

我使用Mac操作系统,但也可以访问Windows

提前感谢。

sed-i'/MODIFICATIONS://{:l;n;//{a\
sed -i '/MODIFICATIONS:/{:l;n;/<\/IF>/{a\
comment
b};bl}' input
评论 b} ;bl}输入
给出:

//修改:
//评论
//评论
//  
评论

您正在查找第一个引号?以及要插入的注释行是什么?抱歉,格式混乱。正在查找要插入的注释行到底是什么?注释行是“Patch123 29\05\2015 A”。用户迁移到141“抱歉,注释”是一个占位符,每个文件都不相同。我真的认为它需要查找
并在其前面放置一些内容。您的问题对于所需的输出不清楚。是否要对每个文件放置相同的注释,但每个批的注释都不同?要插入的注释是“Patch123 29\05\2015 a.用户迁移到141”这需要出现在“修改:”之后出现的“
”之前的行上
//MODIFICATIONS:  
//comment  
//comment  
//  
</IF>  
comment