Holger Stridde World Wide

Suchen und Ersetzen in Dateien auf dem MAC

Nadel im Heuhaufen

Administratoren und Anwender müssen im Alltag oft nach bestimmten Wörtern in großen Dateien oder einer Menge von vielen kleinen Dateien suchen, beispielsweise Log- oder Konfigurationsdateien. Mit dem Tool sed bietet eine Lösung  zum Suchen und Ersetzen von bestimmten Zeichenfolgen.

Auf Linux Systemen habe ich das Programm bisher wie folgt genutzt, was auf dem MAC jedoch nur Fehlermeldungen hervorgerufen hat:

sed -i 's/<alter Begriff>/<neuer Begriff>' /<Pfad>/<Datei>

Für eine  Menge von Dateien kombinieren wir sed mit find:

find /<Pfad>/<Dateien> -type f -exec sed -i 's/<alter Begriff>/<neuer Begriff>/g' {} \;

Folgende Fehlermeldungen erheilt ich bei meinen Versuchen:

sed: 1: "foo.xml ...": command a expects \ followed by text
sed: 1: "foo.xml ...": extra characters at the end of h command

Lösung Backup beim Ersetzen angeben:

sed -i .bak 's/<alter Begriff>/<neuer Begriff>' /<Pfad>/<Datei>

Für eine  Menge von Dateien entsprechend kombiniert mit find:

find /<Pfad>/<Dateien> -type f -exec sed -i .bak 's/<alter Begriff>/<neuer Begriff>/g' {} \;

Erklärung der Optionen von find und sed:

find

sed

Weitere Fehler

An dieser Stelle Liste ich weitere Fehler, welche mir in der Arbeit mit SED begegnet sind und beschreibe deren Auswirkungen:

sed: RE error: illegal byte sequence
Zunächst dache ich SED würde an dieser Stelle gar nicht mehr arbeiten. Letztendlich erstellte SED mir etliche Kopien meiner Dateien. Nur eine der Dateien besaß das falsche Format – zum Glück die letzte, so dass alles bearbeitet wurde. Für diesen Fehler habe ich auch einige Workarounds gefunden. Die Fehlermeldung wurde jedoch weiter angezeigt.

Die mobile Version verlassen