我有一堆文件,从一段代码开始,我试图用另一个代替。
更换:
<?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.txt
。 sed
组件简单地删除第一行和匹配模式之间的行。
sed,稍微调整了你的解决方案:
sed '/<?php/{N;s/\n$r = session_start();/\nheader(\"Location: index.php\");/}' file