Suchen & Ersetzen im Terminal mit sed
Einen Text in vielen Dateien austauschen, ohne jede von Hand zu öffnen – das erledigt sed in einer Zeile. Ich zeige dir das Grundmuster, wie du es sicher in mehreren Dateien anwendest und warum du vorher immer erst ohne -i testest.
„Ich muss eine alte Domain in 30 Dateien austauschen." Genau dafür ist sed (Stream Editor) da – Suchen & Ersetzen direkt im Terminal, ohne einen einzigen Editor zu öffnen.
Das Grundmuster
sed 's/alt/neu/' datei.txts/alt/neu/ heißt substitute: ersetze alt durch neu. Standardmäßig gibt sed das Ergebnis nur aus – die Datei bleibt unangetastet. Genau deshalb ist es ideal zum gefahrlosen Ausprobieren.
Alle Vorkommen pro Zeile: das g
Ohne Zusatz ersetzt sed nur das erste Vorkommen je Zeile. Für alle hängst du g (global) an:
sed 's/alt/neu/g' datei.txtIn der Datei speichern mit -i
Erst wenn die Ausgabe stimmt, schreibst du die Änderung mit -i („in place") in die Datei:
sed -i 's/example\.com/bymw.de/g' seite.htmlAchtung: Der Punkt ist in sed ein Sonderzeichen (steht für „beliebiges Zeichen"). Willst du einen echten Punkt treffen, schreib \. – sonst ersetzt du auch examplexcom.
In vielen Dateien auf einmal
Kombiniert mit einem Datei-Glob oder find läuft es über einen ganzen Ordner:
sed -i 's/alt/neu/g' *.html # alle HTML im Ordner
find . -name "*.md" -exec sed -i 's/alt/neu/g' {} + # rekursivAnderes Trennzeichen bei Pfaden
Enthält dein Text viele Schrägstriche (z. B. URLs), nimm statt / ein anderes Trennzeichen – das spart lästiges Maskieren:
sed 's#https://alt.de#https://neu.de#g' datei.txtDie goldene Regel
Immer erst ohne -i testen und die Ausgabe prüfen. Erst wenn sie stimmt, -i ergänzen. So kannst du nichts kaputt machen – und ein kurzes git status danach zeigt dir genau, was sich geändert hat.
Wenn du bei einem Projekt Unterstützung bei Automatisierung und sauberem Workflow brauchst, helfe ich dir gern – meld dich über bymw.de.
Quellen
Du brauchst mehr als ein Snippet?
Ich entwickle Android-Apps in Kotlin und moderne Websites für Selbstständige und kleine Unternehmen — von der ersten Idee bis zum Release.
Projekt anfragen →Verwandte Snippets
getopts – Skript-Parameter, die sich wie richtige Befehle anfühlen
$1, $2, $3 funktioniert genau so lange, bis man einen Parameter weglassen will. Mit getopts bekommt dein Skript benannte Optionen, eine Hilfe und eine klare Fehlermeldung – in fünfzehn Zeilen.
Zwei Listen vergleichen mit comm – wer fehlt, wer ist neu, wer ist in beiden
Welche Dateien fehlen im Backup? Welche Kunden aus der alten Liste stehen nicht in der neuen? Für genau diese Fragen gibt es seit Unix-Urzeiten ein Werkzeug, das kaum jemand kennt – comm vergleicht zwei sortierte Listen und sagt dir in einer Zeile, was nur links, nur rechts oder in beiden steht.
Warum deine Zählvariable nach der Schleife wieder 0 ist – Prozess-Substitution in Bash
Ein Klassiker, der jeden einmal erwischt: Du zählst in einer while-Schleife hoch, und hinterher steht die Variable trotzdem auf 0. Schuld ist eine Subshell hinter der Pipe. Mit Prozess-Substitution behältst du das Ergebnis – und kannst nebenbei zwei Befehle direkt vergleichen.