我試圖以編程方式替換<?
與<?php
在一堆文件中,但我的sed正則表達式不像我預期的那樣。你能告訴我它有什麼問題嗎?使用sed替換<?與<?php
我在命令行上這裏測試它:
$ sed -e 's/<\?/<\?php/g'
<?
<?php?<?php
d
<?phpd<?php
我試圖以編程方式替換<?
與<?php
在一堆文件中,但我的sed正則表達式不像我預期的那樣。你能告訴我它有什麼問題嗎?使用sed替換<?與<?php
我在命令行上這裏測試它:
$ sed -e 's/<\?/<\?php/g'
<?
<?php?<?php
d
<?phpd<?php
我不認爲你需要對這種轉義:
sed -e 's/<?/<?php/g'
事實上,你不知道。 – 2011-05-16 20:20:37
是的,我認爲你可以。您發佈的解決方案將匹配可選的<,而不是文字<? – 2011-05-16 20:23:33
也許它取決於sed的版本,但是我使用的版本中的'\?'是可選的字符量詞。 http://www.gnu.org/software/sed/manual/html_node/Regular-Expressions.html – 2011-05-16 20:26:41
你真的必須使用SED,或者你也可以使用perl?
perl -pi.tmp -e 's,^<\?(?!php),<?php,' *.php *.inc
rm *.tmp
我使用的是負前瞻,以避免在該文件已經用正確的字符開頭的情況下產生<?phpphp
。
您不需要替換替換中的後退引用。
sed 's#<\?#<?php#'
在一個管道中,爲PHP加倍糾正:
sed 's#<\?#<?php#g' | sed 's#phpphp#php#g'
什麼是你的輸入,你有什麼輸出 - 這是測試案例「是不可能的閱讀 – 2011-05-16 20:18:26