使用sed替换<! - ?用<?php - >

时间:2011-05-16 20:16:37

标签: regex sed

我正在尝试以编程方式将<?替换为一堆文件中的<?php,但我的sed正则表达式并不像我预期的那样。你能告诉我它有什么问题吗?

我在命令行测试它:

$ sed -e 's/<\?/<\?php/g'
<?
<?php?<?php
d
<?phpd<?php

4 个答案:

答案 0 :(得分:3)

我认为你不需要逃避?:

sed -e 's/<?/<?php/g'

答案 1 :(得分:1)

您无需在替换中转义后退参考。

sed 's#<\?#<?php#'

在管道中,纠正加倍的php:

sed 's#<\?#<?php#g' | sed 's#phpphp#php#g'

答案 2 :(得分:0)

你真的必须使用sed,还是你也可以使用perl?

perl -pi.tmp -e 's,^<\?(?!php),<?php,' *.php *.inc
rm *.tmp

我正在使用否定预测,以避免在文件已经以正确字符开头的情况下生成<?phpphp

答案 3 :(得分:0)

这也会跳过与<?=$variable

的匹配
sed -e 's/<?\([^=p]\)/<?php\1/g' -e 's/<?$/<?php/g'