2017-02-03 1 views
1

Nach dem Hacken muss ich einige Code in der ersten Zeile auf zu viele Dateien zu reinigen.Löschen Sie die Zeichen einer Linie zwischen zwei Begrenzern einschließlich sich selbst

<?php $somevar = 'some code....... ?><?php 

Ich muss sauber zwischen und umfassen <?php $somevar und ?> weil neueste <?php können verschiedene solche <html und andere.

Wenn ich dies benutze, brauche ich zwei Stufen, weil nicht saubere Trennzeichen. Ich brauche auch Delimiter löschen.

sed -i.bak 's/\(<?php $drnrwsrl\).*\(?>\)/\1\2/' file.php 

Ergebnis

<?php $drnrwsrl?><?php 

statt, was ich will

<?php 
+0

Können Sie Ihre Eingabezeile erneut bearbeiten Sie Ihre tatsächliche Leistung aufzunehmen. – Inian

Antwort

1

BRE Verwendung ohne Rückreferenzierung:

sed -i.bak 's/<?php \$somevar[^>]*><?php/<?php/' file.php 

Um nur erste Zeile gelten:

sed -i.bak '1s/<?php \$somevar[^>]*><?php/<?php/' file.php 
+0

Eine Menge von Tahnks. Am besten und sauberer, weil ich nur in der ersten Zeile überprüfen muss – abkrim

2

Versuchen

sed -i.bak -E 's/(<\?php.*\(?>)(<\?php)/\2/' file.php 
+0

'sed: -e expresion # 1, carácter 29:) ó \) desemparejados' – abkrim

+0

Entschuldigung, ich habe es aktualisiert – Andy

Verwandte Themen