Was ist falsch an meiner String-Ersetzung mit sed unter Mac OS X?

8

Ich möchte #Banner none durch Banner /etc/sshd_banner ersetzen, das innerhalb von /etc/sshd_config liegt. Wenn ich renne

%Vor%

Ich bekomme den folgenden Fehler

  

sed: 1: "/ etc / sshd_config": nicht abgeschlossenes Ersatzmuster

Irgendwelche Ideen, wie Sie dieses Problem beheben können?

    
Technic1an 18.02.2015, 19:19
quelle

3 Antworten

12

Versuchen Sie Folgendes:

%Vor%

Wenn Sie das Trennzeichen ändern, müssen Sie das /

nicht verlassen

Dein ursprünglicher Beitrag hat am Ende ein / verpasst.

Aus dem OS X-Handbuch

%Vor%

zero-length = ""

    
Jotne 18.02.2015, 19:28
quelle
10

Drei Probleme mit Ihrem Befehl:

  1. Sie verpassen den abschließenden / .
  2. Sie können / trotzdem nicht als Trennzeichen verwenden, da dieses Zeichen in der Zeichenfolge vorkommt, die Sie ersetzen / ersetzen möchten. Sie sollten ein anderes Zeichen, z. B. ein Pipe-Zeichen, als Trennzeichen verwenden.
  3. In der Version (BSD) von sed , die im Lieferumfang von Mac OS X enthalten ist, erwartet das -i -Flag ein obligatorisches <extension> -Argument, das Ihr Befehl nicht enthält. Eine leere Zeichenfolge ( "" ) sollte dem -i -Flag folgen, wenn Sie die Datei direkt mit dieser Version von sed .
  4. bearbeiten möchten

Versuchen Sie zusammen

%Vor%     
Jubobs 18.02.2015 19:38
quelle
0

Versuchen Sie einfache Anführungszeichen. Einige Seds erfordern außerdem, dass Sie das erste erste Trennzeichen entfernen, wenn Sie etwas anderes als / verwenden möchten.

%Vor%

Noch eine Sache ist, dass # möglicherweise als ein Kommentar interpretiert wird, der bis zum Ende der Zeile geht.

    
Fernando Basso 18.02.2015 19:54
quelle

Tags und Links