MWCodebymw.de ↗
Terminal

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.txt

s/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.txt

In 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.html

Achtung: 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' {} +   # rekursiv

Anderes 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.txt

Die 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

#Terminal#sed#Suchen-Ersetzen#Textbearbeitung#CLI

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 →