Linux 如何正确使用sed搜索/替换变量中的部分行

Linux 如何正确使用sed搜索/替换变量中的部分行,linux,bash,sed,Linux,Bash,Sed,背景:我正在使用ZenCart php软件,使用sed我想编辑不同的主题,但使用相同的php文件。因此,通过sed对主题进行一些自动更改 s1=$'<img itemprop="image" src="'\'' . zen_output_string($src) . '\''"' sed -i.bak -r 's/$image = '\''<img src="'\'' \. zen_output_string\($src\) \. '\''" alt="'\'' \. zen_

背景:我正在使用ZenCart php软件,使用sed我想编辑不同的主题,但使用相同的php文件。因此,通过sed对主题进行一些自动更改

s1=$'<img itemprop="image" src="'\'' . zen_output_string($src) . '\''"'   
sed -i.bak -r 's/$image = '\''<img src="'\'' \. zen_output_string\($src\) \. '\''" alt="'\'' \. zen_output_string\($alt\) \. '\''"'\'';/'"$s1"/ html_output.php
以上操作非常有效,直到出现以下代码:

for dir2 in ./zentmp/includes/templates/*/
do
dir2=${dir2%*/}
s4=$"<span itemprop="name"><?php echo \$products_name; ?>"
sed -i -r 's/<?php echo \$products_name; ?>'/'"${s4}"/ ./$dir2/tpl_product_info_display.php
done

$image = '<img itemprop="image" src="' . zen_output_string($src) . '" alt="' . zen_output_string($alt) . '"';
<span  itemprop="image" class="imgLink">
请注意,第二个sed使用了两次。

sed-r-i.bak--posix/$image='*$/itemprop=\'image\'>/
sed -r -i.bak --posix "/$image = '<img src=/ s/<img src=/<img itemprop=\"image\" src=/
/<span class=/ s/class=/itemprop=\"image\" class=/
/\\$rel.*title.*addslashes/ s/> *$/ itemprop=\"image\">/
" sample.txt
“sample.txt
3段,每段搜索和限制线与预期的模式,而不是只更换内部所需的部分(避免大量的“和”转换外壳)

\为了简化,必须使用“around”图像(如果在s的搜索模式中捕获了,则可以使用类似\1的背面模式)/ \由于shell和sed替换,最后一次搜索需要$

--posix允许在非GNU sed中重用相同的sed代码/ “sample.txt 3段,每段搜索和限制线与预期的模式,而不是只更换内部所需的部分(避免大量的“和”转换外壳)

\为了简化,必须使用“around”图像(如果在s的搜索模式中捕获了,则可以使用类似\1的背面模式)/ \由于shell和sed替换,最后一次搜索需要$


--posix允许在非GNU sed中重复使用相同的sed代码,预期的结果是什么?最终的代码应该是:$image='单引号中的变量不会被扩展。请发布一个实际代码的例子,说明替换应该成功。我认为构建一个正则表达式要比构建deco更容易看出哪里出了问题构造上面的代码。预期结果是什么?最终代码应该是这样的:单引号中的$image='变量没有展开。请给出一个实际代码的示例,替换应该成功。我认为构建一个正则表达式比解构上面的代码更容易看出哪里出了问题。
<span class="imgLink">
<span  itemprop="image" class="imgLink">
$rel . '" title="' . addslashes($products_name) . '">
$rel . '" title="' . addslashes($products_name) . '" itemprop="image">
sed -r -i.bak --posix "/$image = '<img src=/ s/<img src=/<img itemprop=\"image\" src=/
/<span class=/ s/class=/itemprop=\"image\" class=/
/\\$rel.*title.*addslashes/ s/> *$/ itemprop=\"image\">/
" sample.txt