2017-08-01 1 views
1

Ich muss einige Zeilen aus meiner Dhcpd.conf-Datei von einem einfachen PHP-Skript löschen. Also versuche ich den Befehl sed zu benutzen. Am Terminal Ich habe diesen Befehl verwenden tryed von Zeile 1 bis 3 löschen und es funktioniert:sed Bash-Befehl auf PHP-Skript

sed -i '1,3d' pippo.txt 

Das Problem ist, dass ich nicht verstehen kann, wie für Zeile numers einig PHP-Variable sed verwenden geben. Ich brauche so etwas wie:

sed -i '$var1,$var2d' pippo.txt 

mir jemand mit dem richtigen sintax für diesen Befehl auf php pls helfen kann. Danke.

Antwort

0

Verwenden Sie doppelte Anführungszeichen, um die Variablen zu erweitern und die Variablen mit geschweiften Klammern zu umschließen.

var1=1 
var2=2 
sed -i "${var1},${var2}d" pippo.txt 

Sie können eine Variable als $var2d definieren. Wenn Sie die Variable $var2, gefolgt von dem Buchstaben d verwenden müssen, müssen Sie geschweifte Klammern wie in ${var2}d verwenden. Dies ist jedoch für $var1 in diesem Fall nicht notwendig, da es keine Mehrdeutigkeit gibt, aber es ist gut, als Praxis zu folgen.

+0

danke für die antwort. kann nicht verstehen, warum immer noch nicht funktioniert hat. $ var1 = 1; $ var2 = 2; $ output = shell_exec ('sed -i "$ {var1}, $ {var2}" pippo.txt'); –

+0

Ihre äußersten Anführungszeichen sind einfache Anführungszeichen, daher wird alles Innere nicht erweitert. Um expandierende Interna zuzulassen, vertauschen Sie einfache und doppelte Anführungszeichen. Übrigens ist dein 'sed' Befehl sowieso falsch. Was versuchst du zu machen?? Nur um zu demonstrieren, verdoppelt das folgende nur die erste und die zweite Zeile (ohne jedoch irgendeine Ausgabe zu erzeugen). '$ var1 = 1; $ var2 = 2; $ output = shell_exec ("sed -i '$ {var1}, $ {var2} p' pippo.txt"); ' – Anubis

+0

was ich tun muss, ist einige Zeilen aus einer Datei zu löschen. zum Beispiel muss ich von Zeile 2 bis Zeile 5 in der Datei durch sed-Befehl von einem PHP-Skript löschen. es funktioniert, wenn ich versuche, den sed-Befehl vom Terminal zu verwenden, der die Zeile angibt, aber wenn ich versuche, das mit der PHP-Variable zu tun, funktioniert mein Skript nicht. Keine Zeile wurde gelöscht. –