全局替换所有页面中的短标签

时间:2015-06-04 19:48:58

标签: regex sed

我正在寻找构建一个全局杀死我的脚本中的短标签的sed,因为有大量遗留的东西需要被放逐。我正在使用一个正则表达式,但它是贪婪的,所以我正在寻找一个非贪婪的sed,它将取代所有出现的

<\?=(.*)\?>        ## Pattern
<?php echo $1; ?>  ## Replacement

这会将<?=$foo?>转变为<?php echo $foo; ?>,但它也会将<?=$foo?><?=$bar?>转换为<?php $foo?><?=$bar; ?>并重复匹配的行。

SED看起来像sed -i -e "s/<?=\(.*\)?>/<?php echo \1; ?>/g" file

我的回答是假设

<?=$foo?><?=$bar?>                      ## in
<?php echo $foo; ?><?php echo $bar; ?>  ## out

1 个答案:

答案 0 :(得分:1)

您可以尝试使用

sed 's/<[?]=\([^?]*\)/<?php echo \1; /g' file