451 Stimmen

sed-Befehl mit Option -i schlägt auf Mac fehl, funktioniert aber unter Linux

Ich habe Folgendes erfolgreich eingesetzt sed Befehl zum Suchen/Ersetzen von Text unter Linux:

sed -i 's/old_link/new_link/g' *

Wenn ich es jedoch auf meinem Mac OS X versuche, erhalte ich eine Fehlermeldung:

"Befehl c erwartet \ gefolgt von Text"

Ich dachte, auf meinem Mac läuft eine normale BASH-Shell. Was ist los?

EDIT:

Nach Angaben von @High Performance ist dies auf den Mac zurückzuführen sed da es sich um eine andere (BSD) Variante handelt, wäre meine Frage, wie ich diesen Befehl in BSD replizieren kann sed ?

EDIT:

Hier ist ein konkretes Beispiel, das dies verursacht:

sed -i 's/hello/gbye/g' *

1voto

katopz Punkte 593

So können Sie die Umgebungsvariablen auf die Vorlagendatei anwenden (keine Sicherung erforderlich).

1. Vorlage mit {{FOO}} zum späteren Ersetzen erstellen.

echo "Hello {{FOO}}" > foo.conf.tmpl

2. Ersetzen Sie {{FOO}} durch die Variable FOO und geben Sie sie in der neuen Datei foo.conf aus

FOO="world" && sed -e "s/{{FOO}}/$FOO/g" foo.conf.tmpl > foo.conf

Beide arbeiten macOS 10.12.4 y Ubuntu 14.04.5

-3voto

ashokrajar Punkte 131
sed -ie 's/old_link/new_link/g' *

Funktioniert sowohl unter BSD als auch unter Linux mit gnu sed

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X