GNU/Linux >> LINUX-Kenntnisse >  >> Linux

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

Ich glaube, dass unter OS X, wenn Sie -i verwenden, eine Erweiterung für die Sicherungsdateien erforderlich ist . Versuchen Sie:

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

Mit GNU sed die Erweiterung ist optional .


Wenn Sie die -i verwenden Option müssen Sie eine Erweiterung für Ihre Backups angeben.

Wenn Sie Folgendes haben:

File1.txt
File2.cfg

Der Befehl (beachten Sie das fehlende Leerzeichen zwischen -i und '' und die -e damit es auf neuen Versionen von Mac und GNU funktioniert):

sed -i'.original' -e 's/old_link/new_link/g' *

Erstellen Sie 2 Sicherungsdateien wie:

File1.txt.original
File2.cfg.original

Es gibt keinen tragbaren Weg, um das Erstellen von Sicherungsdateien zu vermeiden, da es unmöglich ist, eine Mischung aus sed-Befehlen zu finden, die in allen Fällen funktioniert:

  • sed -i -e ... - funktioniert nicht unter OS X, da es -e erstellt Sicherungen
  • sed -i'' -e ... - funktioniert nicht unter OS X 10.6, aber unter 10.9+
  • sed -i '' -e ... - funktioniert nicht unter GNU

Hinweis Da es keinen sed-Befehl gibt, der auf allen Plattformen funktioniert, können Sie versuchen, einen anderen Befehl zu verwenden, um dasselbe Ergebnis zu erzielen.

Beispiel:perl -i -pe's/old_link/new_link/g' *


Linux
  1. Ersetzen Sie intelligente Anführungszeichen durch den Linux-Befehl sed

  2. Linux Tee-Befehl mit Beispielen

  3. So verwenden Sie den Sed-Befehl unter Linux mit Beispielen

  4. JQ-Befehl in Linux mit Beispielen

  5. Gibt es einen Linux-Befehl wie mv, aber mit Regex?

Linux-IP-Befehl mit Beispielen

Tr-Befehl in Linux mit Beispielen

15 Linux-PS-Befehl mit Beispielen

Linux-CD-Befehl mit Beispielen

Linux-Uhrbefehl mit Beispielen

Verwendung des Linux-Befehls sed mit Beispielen