Mit sed im terminal zum ersetzen von text in der Datei
Ich habe diesen text in diese Datei:
test.php
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'original',
'username' => 'root',
'password' => 'root',
'host' => 'localhost'
),
),
);
Im terminal ausführen dieser Linie ersetzen 'original' mit 'neuen'
sed -i 's/original/new/g' test.php
UPDATE: Die Fehlermeldung ist:
sed: 1: "test.php": undefined label "est.php'
Was ist das problem?
UPDATE 2:
Wenn ich nur laufen: ( habe ich entfernt, die '-i')
sed 's/original/new/g' test.php
Sehe ich die text Datei geändert in der Klemme. Aber dann wird die Datei nicht gespeichert.
- Es ist eher unwahrscheinlich, dass die Fehlermeldung zu bekommen, die Sie erwähnt haben, durch Ausstellung
sed -i 's/original/new/g' test.php
. Welchen Befehl hast du benutzt? - möglich, Duplikat der warum "zusätzliche Zeichen nach Befehl" Fehler angezeigt, für die sed-Befehlszeile gezeigt?
- Ich fand, dass problem ist das 'ich'. Wenn ich nur 'sed 's/original/neu/g' test.php' (ich entfernt die '-i') es funktioniert, aber die Datei wird nicht gespeichert.
- BTW: wieso der downvote...?
- Ich habe gerade kopieren/einfügen-Befehle. Ziemlich sicher.
- Sorry, Sie hatten Recht. Die Fehlermeldung ist diese hier: sed: 1: "test.php": undefined label "est.php'
- Sie haben nicht noch gezeigt, das eigentliche problem-code. Es scheint, dass die verlinkten doppelte Frage würde lösen das Problem, das Sie gegenüberstellen.
- Ich aktualisiert meine Frage mit der richtigen Fehlermeldung. Ich habe versucht, mit anderen Trennzeichen, wie gesagt, in der anderen Frage der link, aber es hat nicht funktioniert.
- Sind die Muster & replacement strings-Variablen?
- Nein, Sie sind nur text
Du musst angemeldet sein, um einen Kommentar abzugeben.
Auf BSDish Plattformen (einschließlich Mac OSX), die
-i
option erfordert ein argument.Beachten Sie die leeren argument
''
./g
Flagge ist überflüssig.sed -i
portabel: stackoverflow.com/questions/5694228/...