Was ist Los mit meinem string-Ersetzung mit sed auf Mac OS X?
Möchte ich ersetzen #Banner none
mit Banner /etc/sshd_banner
ist innerhalb /etc/sshd_config
. Wenn ich
sudo sed -i "s/#Banner none/Banner \/etc\/sshd_banner" /etc/sshd_config
Bekomme ich die folgende Fehlermeldung
sed: 1: "/etc/sshd_config": unterminated Ersatz-Muster
Irgendwelche Ideen auf, wie dieses Problem zu beheben?
- Fügen Sie eine Beendigung / zu den Ersatz-Ausdruck. Ala
"s/#Banner none/Banner \/etc\/sshd_banner/"
- Das schien nicht zu funktionieren.
- ? Was bedeutet...? Der Ersatz hat nicht funktioniert, oder die Fehlermeldung nicht Weg? Einer der nette Dinge über sed ist, dass / ist nur eine Konvention für das Trennzeichen. Versuchen
sed "s|#Banner none|Banner /etc/sshd_banner|" infile
zur Vereinfachung der Lesbarkeit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eks hier verwende ich
"
ad TrennzeichenDurch ändern der Trennzeichen, die Sie nicht brauchen, um zu entkommen die
/
Ihre original-Beitrag verpasst man
/
am Ende.Vom OS-X-Handbuch
zero-length
=""
sed -i .bak ...
- ich brauchte eine Erweiterung für einen backup-Datei.Drei Probleme mit Ihrem Befehl:
/
./
als Trennzeichen sowieso, denn dieses Zeichen tritt in die Zeichenfolge, die Sie versuchen zu ersetzen/ersetzen. Sollten Sie ein anderes Zeichen verwenden, wie ein pipe-Zeichen als Trennzeichen.sed
im Lieferumfang von Mac OS X, die-i
flag erwartet eine zwingend<extension>
argument, die Ihrem Befehl fehlt. Eine leere Zeichenfolge (""
) Folgen sollte, der-i
flag, wenn Sie möchten, Bearbeiten Sie die Datei in den-Platz mit dieser version vonsed
.In der Zusammenfassung, versuchen Sie
Versuchen, einzelne Zitate. Auch, einige Festplatten mit Selbstverschlüsselung erfordern, dass Sie die Flucht der ersten Trennzeichen, wenn Sie wollen, etwas anderes als
/
.Eine weitere Sache ist, dass
#
möglicherweise interpretiert als Kommentar geht bis zum Ende der Zeile.