sed:replace一段文字

我有一堆文件,从一段代码开始,我试图用另一个代替。

更换:

<?php $r = session_start(); (more lines) 

附:

 <?php header("Location: index.php"); (more lines of code) 

所以即时尝试匹配块与sed 's/<?php\n$r = session_start();/<?php\nheader...但它不起作用。

我将不胜感激在这里发生的事情以及如何实现这一目标。 我正在考虑用python来做这件事。

谢谢!

这可能适用于你(GNU sed):

 sed -i '1i\ This is a\ new block of\ code 1,/$r = session_start();/d' file 

或者,如果您更愿意将新代码放在一个文件中:

 sed -i '1r replacement_code_file 1,/$r = session_start();/d' file 

全部在一条线上:

 sed -i -e '1r replacement_code_file' -e '1,/$r = session_start();/d' file 

一种使用sed

 cat block.txt <(sed '1,/$r = session_start();/d' file.txt) > newfile.txt 

只需将要添加到每个文件的文本块添加到block.txtsed组件简单地删除第一行和匹配模式之间的行。

sed,稍微调整了你的解决方案:

 sed '/<?php/{N;s/\n$r = session_start();/\nheader(\"Location: index.php\");/}' file