我完全同意Ben Hillier的評論。 (我的意思尤其是備份,因爲我有大約只有PHP小知識的一部分。)但是...
sed的命令可以使用以下:
sed 's/^<?php .* ?>\(<?php.*\)$/\1/'
或者,它可以與AWK完成:
awk '/<\?php .* \?><\?php/ { $0 = gensub(/^<\?php.*\?>(<\?php.*)$/, "\\1", 1, $0) }{ print }'
或與附加條件NR==1
到確保了測試/替換僅第一行完成:
awk 'NR==1 && /<\?php .* \?><\?php/ { $0 = gensub(/^<\?php.*\?>(<\?php.*)$/, "\\1", 1, $0) }{ print }'
其中一個命令(巧妙地與find
結合)應該能夠完成這項工作。
請注意不同escapings這是必要的,sed的與AWK。
而且,由於Ben Hillier已經推薦:以前不要忘記備份。
示範:
$ echo '<?php lots-Of-Stuff-I-Can-Target-Easily-With-Grep ?><?php' \
> | sed 's/^<?php .* ?>\(<?php.*\)$/\1/'
<?php
$ echo '<?php' | sed 's/^<?php .* ?>\(<?php.*\)$/\1/'
<?php
$ echo '<?php lots-Of-Stuff-I-Can-Target-Easily-With-Grep ?><?php' | awk '/<\?php .* \?><\?php/ { $0 = gensub(/^<\?php.*\?>(<\?php.*)$/, "\\1", 1, $0) }{ print }'
<?php
$ echo '<?php' | awk '/<\?php .* \?><\?php/ { $0 = gensub(/^<\?php.*\?>(<\?php.*)$/, "\\1", 1, $0) }{ print }'
<?php
$ echo '<?php lots-Of-Stuff-I-Can-Target-Easily-With-Grep ?><?php' | awk 'NR==1 && /<\?php .* \?><\?php/ { $0 = gensub(/^<\?php.*\?>(<\?php.*)$/, "\\1", 1, $0) }{ print }'
<?php
$ echo '<?php' | awk 'NR==1 && /<\?php .* \?><\?php/ { $0 = gensub(/^<\?php.*\?>(<\?php.*)$/, "\\1", 1, $0) }{ print }'
<?php
$ cat >test.txt <<EOF
> <?php lots-Of-Stuff-I-Can-Target-Easily-With-Grep ?><?php
> // contents
> // contents
> // contents
> ?>
> EOF
$ cat test.txt | sed 's/^<?php .* ?>\(<?php.*\)$/\1/'
<?php
// contents
// contents
// contents
?>
$ cat test.txt | awk '/<\?php .* \?><\?php/ { $0 = gensub(/^<\?php.*\?>(<\?php.*)$/, "\\1", 1, $0) }{ print }'
<?php
// contents
// contents
// contents
?>
$ cat test.txt | awk 'NR==1 && /<\?php .* \?><\?php/ { $0 = gensub(/^<\?php.*\?>(<\?php.*)$/, "\\1", 1, $0) }{ print }'
<?php
// contents
// contents
// contents
?>
$
最後但並非最不重要的人讀者awk腳本:
# catch 1st line with a duplicated "<?php"
NR==1 && /<\?php .* \?><\?php/ {
# replace the line by everything including and after 2nd "<?php"
$0 = gensub(/^<\?php.*\?>(<\?php.*)$/, "\\1", 1, $0)
}
{ print } # print any line
大多數PHP IDE的應該是能夠做到這一點。只需搜索並替換與該標籤匹配的所有內容。確保你有一個備份,以防IDE過熱。關於備份的問題:也許你應該向你的朋友講述爲什麼他應該有一個人。 –
嘿,本,我去了Scheff解決方案,但仍然謝謝你! – Gamlus