sed meldet "unbekannter Befehl"

sed meldet "unbekannter Befehl"

Ich habe das geschrieben:

sudo sed -i ‘s/3389/3390/g’ /etc/xrdp/xrdp.ini

Das hat diesen Fehler erzeugt:

sed: -e expression #1, char 1: unknown command: `'

Antwort1

Vergleichen Sie Ihre

 sudo sed -i ‘s/3389/3390/g’ /etc/xrdp/xrdp.ini

vs. die richtige

 sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini

Überprüfen Sie die verschiedenen Arten von Anführungszeichen.

Seien Sie vorsichtig beim Kopieren und Einfügen aus Dokumenteditoren wie Writer oder Word, da diese Anführungszeichen (und andere Dinge) häufig automatisch ändern, um sie Ihren lokalen Anführungszeichen anzupassen.

Antwort2

Ich hatte den gleichen Fehler, aber die Ursache war anders. Ich habe weder das `-Zeichen verwendet, noch habe ich den Code von irgendwoher kopiert und eingefügt. Ich habe ein Sed-Skript mit einer Bedingung geschrieben und eine neue Zeile für den Befehl verwendet. Ich poste das hier für den Fall, dass jemand anderes das gleiche Problem hat und die akzeptierte Antwort ihm nicht geholfen hat.

So reproduzieren Sie den Fehler:

echo class:myclass > myfile
cat script
/class:/
s/myclass/MYCLASS/g #ctrl+d to exit
sed -f script myfile

Ausgabe:

sed: file script line 2: unknown command: `
'

Das Problem lässt sich beheben, indem Sie den Befehl entweder nach der Bedingung platzieren (in derselben Zeile) oder geschweifte Klammern verwenden, sodass das Skript folgendermaßen aussieht:

/class:/ s/myclass/MYCLASS/

Oder dieses:

/class:/ {
s/myclass/MYCLASS/
}

verwandte Informationen