我有一堆文件,从一段代码开始,我试图用另一个代替。
替换:
<?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来做这件事。
谢谢!
答案 0 :(得分:3)
这可能适合你(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
答案 1 :(得分:0)
使用sed
的一种方式:
cat block.txt <(sed '1,/$r = session_start();/d' file.txt) > newfile.txt
只需将要添加到每个文件的文本块添加到block.txt
即可。 sed
组件只删除第一行和匹配模式之间的行。
答案 2 :(得分:0)
sed,稍微调整一下你的解决方案:
sed '/<?php/{N;s/\n$r = session_start();/\nheader(\"Location: index.php\");/}' file