在sed的替换字符串中使用文件的内容

Ral*_*lph 2 bash replace sed

我花了几个小时搜索,找不到解决方案.我有一个包含超过1,000个PHP文件的目录.我需要替换这些文件中的一些代码,如下所示:

查找:

session_register("CurWebsiteID");
Run Code Online (Sandbox Code Playgroud)

替换为(保存在replacement.txt中:

if(!function_exists ("session_register") && isset($_SERVER["DOCUMENT_ROOT"])){require_once($_SERVER["DOCUMENT_ROOT"]."/libraries/phpruntime/php_legacy_session_functions.php");} session_register("CurWebsiteID");
Run Code Online (Sandbox Code Playgroud)

使用下面的命令,我可以用$(cat replacement.txt)替换模式,而我正在寻找用文本文件的内容替换它们.

正在使用的命令:

find . -name "*.xml" | xargs -n 1 sed -i -e 's/mercy/$(cat replacement.txt)/g'

我也试过使用变量而replacement=code_above;运行调整后的版本,$(echo $replacement)但这也无济于事.

实现这一目标的正确方法是什么?

SLe*_*ort 5

这里不需要命令替换.您可以使用sed r命令插入文件内容并d删除与模式匹配的行:

find . -name "*.xml" | xargs -n 1 sed -i -e '/mercy/r replacement.txt' -e '//d'
Run Code Online (Sandbox Code Playgroud)