{"id":29525,"date":"2026-02-24T09:50:00","date_gmt":"2026-02-24T08:50:00","guid":{"rendered":"https:\/\/contabo.com\/blog\/so-verwendest-du-den-linux-sed-befehl-im-jahr-2026\/"},"modified":"2026-03-30T10:36:19","modified_gmt":"2026-03-30T08:36:19","slug":"so-verwendest-du-den-linux-sed-befehl-im-jahr-2026","status":"publish","type":"post","link":"https:\/\/contabo.com\/blog\/de\/so-verwendest-du-den-linux-sed-befehl-im-jahr-2026\/","title":{"rendered":"So verwendest du den Linux sed-Befehl im Jahr 2026"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"630\" src=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_linux-sed-command-cheat-sheet.webp\" alt=\"So verwendest du den Linux sed-Befehl im Jahr 2026 (Titelbild)\" class=\"wp-image-28521\" srcset=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_linux-sed-command-cheat-sheet.webp 1200w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_linux-sed-command-cheat-sheet-600x315.webp 600w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_linux-sed-command-cheat-sheet-768x403.webp 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/figure>\n\n\n\n<p>Jeder Sysadmin steht irgendwann vor demselben Problem: 400 Konfigurationsdateien, eine falsche IP-Adresse in jeder einzelnen, und null Lust, sie alle von Hand zu \u00f6ffnen. Genau hier spielt der <strong>sed-Befehl<\/strong> seine St\u00e4rke aus.<\/p>\n\n\n\n<p>Mit dem Linux <strong>sed-Befehl<\/strong> (kurz f\u00fcr Stream Editor) kannst du Text in Dateien direkt im Terminal suchen, ersetzen, einf\u00fcgen und l\u00f6schen. Keine GUI, kein Texteditor, kein Klicken durch Men\u00fcs. Daten rein, transformierte Ausgabe raus. Er verarbeitet Regex-Muster, funktioniert mit Pipe-Eingaben und kommt problemlos mit Dateien jeder Gr\u00f6\u00dfe klar.<\/p>\n\n\n\n<p>Dieser Leitfaden behandelt die <strong>sed-Befehlssyntax<\/strong>, Optionen, praktische Beispiele und Anwendungsf\u00e4lle aus der Praxis. Falls du noch nie mit sed gearbeitet hast, wirst du am Ende fit genug sein, um loszulegen. Falls du die Grundlagen schon kennst, f\u00fcllen die Abschnitte zu Batch-Verarbeitung und Backreferences die L\u00fccken.<\/p>\n\n\n\n<p>Sed arbeitet in einer einfachen Schleife: Zeile einlesen, Befehle anwenden, Ergebnis ausgeben, wiederholen. Die gesamte Datei wird dabei nie in den Arbeitsspeicher geladen. Deshalb verarbeitet sed auch mehrere Gigabyte gro\u00dfe Logdateien ohne Probleme. Genau dieser Zeile-f\u00fcr-Zeile-Ansatz macht sed so effizient f\u00fcr automatisierte Skripte und ist einer der Gr\u00fcnde, warum es seit den 1970er Jahren im Einsatz ist.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-sed-befehlssyntax-und-optionen\">sed-Befehlssyntax und Optionen<\/h2>\n\n\n\n<p>Die allgemeine <strong>sed-Befehlssyntax<\/strong> sieht so aus:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed &#91;options] 'script' filename<\/code><\/pre>\n\n\n\n<p>Der Skriptteil enth\u00e4lt den Unterbefehl, das Suchmuster, den Ersetzungsstring und die Flags. Alles wird in einfache Anf\u00fchrungszeichen gesetzt und durch ein Trennzeichen getrennt, in der Regel einen Schr\u00e4gstrich (&lt;wpml_ignored_tag wpml_name=&#8220;code&#8220; wpml_value=&#8220;Lw==&#8220; wpml_attrs=&#8220;&#8220;\/&gt;). Du kannst auch einen Backslash oder eine Pipe als Trennzeichen verwenden, wenn dein Muster Schr\u00e4gstriche enth\u00e4lt.<\/p>\n\n\n\n<p>Hier sind die g\u00e4ngigsten <strong>sed-Optionen<\/strong>, die du tats\u00e4chlich brauchst:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>-i<\/strong> &#8212; \u00fcberschreibt die Originaldatei direkt. Das zugleich gef\u00e4hrlichste und n\u00fctzlichste Flag.<\/li>\n\n\n\n<li><strong>-n<\/strong> &#8212; unterdr\u00fcckt die automatische Ausgabe. Nur Zeilen, die du explizit mit &lt;wpml_ignored_tag wpml_name=&#8220;code&#8220; wpml_value=&#8220;cCA=&#8220; wpml_attrs=&#8220;&#8220;\/&gt;ausgibst, werden angezeigt.<\/li>\n\n\n\n<li><strong>-e<\/strong> &#8211; erlaubt dir, mehrere Befehle in einem sed-Aufruf zu verketten.<\/li>\n\n\n\n<li><strong>-f<\/strong> &#8211; liest Befehle aus einer externen Skriptdatei.<\/li>\n\n\n\n<li><strong>&#8211;help<\/strong> &#8211; zeigt die Nutzungsinformationen an.<\/li>\n\n\n\n<li><strong>&#8211;debug<\/strong> &#8211; kommentiert die Ausf\u00fchrung im Terminal.<\/li>\n\n\n\n<li><strong>-b<\/strong> &#8211; \u00f6ffnet Dateien im Bin\u00e4rmodus.<\/li>\n\n\n\n<li><strong>-l<\/strong> &#8211; legt die Zeilenumbruchl\u00e4nge f\u00fcr den &lt;wpml_ignored_tag wpml_name=&#8220;code&#8220; wpml_value=&#8220;bCA=&#8220; wpml_attrs=&#8220;&#8220;\/&gt;Befehl fest.<\/li>\n<\/ul>\n\n\n\n<p>Das Arbeitspferd ist der <strong>s<\/strong>-Befehl (substitute, also ersetzen). Seine Syntax:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>'s\/regex_pattern\/replacement\/flags'<\/code><\/pre>\n\n\n\n<p>Die <strong>sed-Flags<\/strong>, die das Ersetzungsverhalten steuern:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>g<\/strong> &#8212; globale Ersetzung. Trifft jedes Vorkommen in der Zeile, nicht nur das Erste.<\/li>\n\n\n\n<li><strong>p<\/strong> &#8211; gibt die ge\u00e4nderte Zeile als zus\u00e4tzliche Ausgabe aus.<\/li>\n\n\n\n<li><strong>i<\/strong> &#8211; Gro\u00df-\/Kleinschreibung wird ignoriert.<\/li>\n\n\n\n<li><em>Zahl<\/em> &#8211; ersetzt nur das n-te Vorkommen (z. B. &lt;wpml_ignored_tag wpml_name=&#8220;code&#8220; wpml_value=&#8220;MiA=&#8220; wpml_attrs=&#8220;&#8220;\/&gt; ersetzt den zweiten Treffer).<\/li>\n<\/ul>\n\n\n\n<p>Du kannst Flags kombinieren. Das gi-Flag f\u00fchrt eine globale Ersetzung ohne Ber\u00fccksichtigung der Gro\u00df-\/Kleinschreibung durch.<\/p>\n\n\n\n<p>Gut zu wissen: Das Trennzeichen muss kein Schr\u00e4gstrich sein. Wenn du mit Dateipfaden oder URLs arbeitest, die voller Schr\u00e4gstriche sind, nimm stattdessen eine Pipe oder ein Komma. <code>sed 's|\/old\/path|\/new\/path|g'<\/code> Das liest sich deutlich sauberer, als jeden Schr\u00e4gstrich zu escapen. W\u00e4hle einfach ein Zeichen, das in deinen Such- oder Ersetzungsstrings nicht vorkommt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-so-installierst-du-sed-unter-linux\">So installierst du sed unter Linux<\/h2>\n\n\n\n<p>Wahrscheinlich ist sed bereits auf deinem System installiert. Es wird mit praktisch jeder Linux-Distribution ausgeliefert. Falls du aber ein stark reduziertes Container-Image oder eine Minimalinstallation nutzt, erf\u00e4hrst du hier, <strong>wie du sed verwendest<\/strong>, nachdem du es installiert hast:<\/p>\n\n\n\n<p>Aktualisiere deine Paketliste:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get update<\/code><\/pre>\n\n\n\n<p>Installiere das sed-Paket:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get install sed<\/code><\/pre>\n\n\n\n<p>\u00dcberpr\u00fcfe die Installation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed --version<\/code><\/pre>\n\n\n\n<p>Wenn dabei eine Versionsnummer ausgegeben wird, bist du startklar. Auf RHEL-\/CentOS-basierten Distributionen ersetzt du swap <code>apt-get<\/code> for <code>yum <\/code>or <code>dnf<\/code>. Der Paketname des <strong>sed-Stream-Editors<\/strong> bleibt \u00fcber alle Distributionen hinweg gleich.<\/p>\n\n\n\n<p>Unter Arch Linux geh\u00f6rt sed zur Basisgruppe und sollte bereits vorhanden sein. Unter Alpine (h\u00e4ufig in Docker-Containern) nutzt du &#8218;apk add sed&#8216;. Falls du macOS verwendest, ist das vorinstallierte sed die BSD-Version, die sich leicht anders verh\u00e4lt als GNU sed. Die meisten Tutorials im Netz setzen GNU sed voraus. Installiere es deshalb \u00fcber Homebrew mit &#8218;brew install gnu-sed&#8216;, um dir \u00c4rger zu ersparen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-sed-befehlsbeispiele\">sed-Befehlsbeispiele<\/h2>\n\n\n\n<p>Hier sind 10 praktische <strong>sed-Befehlsbeispiele<\/strong>, die die wichtigsten Operationen f\u00fcr den Alltag abdecken. Keiner der folgenden Befehle ver\u00e4ndert die Originaldatei. F\u00fcge -i hinzu, wenn du \u00c4nderungen wirklich \u00fcbernehmen willst.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-suchen-und-ersetzen-eines-strings-mit-sed\">Suchen und Ersetzen eines Strings mit sed<\/h3>\n\n\n\n<p>Die h\u00e4ufigste Anwendung von sed. Die <strong>sed-Such- und Ersetzungssyntax<\/strong> ist denkbar einfach:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed 's\/old_string\/new_string\/' myfilename.txt<\/code><\/pre>\n\n\n\n<p>Angenommen, du hast eine Datei namens <code>scenery.txt<\/code> und willst &#8222;images&#8220; durch &#8222;photos&#8220; ersetzen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed 's\/images\/photos\/' scenery.txt<\/code><\/pre>\n\n\n\n<p>Dieser <strong>sed-Such- und Ersetzungsbefehl<\/strong> trifft nur den ersten Treffer pro Zeile. Wenn dein Suchstring Schr\u00e4gstriche enth\u00e4lt, wechsle zu einem anderen Trennzeichen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed 's|\/usr\/local|\/opt|' config.txt<\/code><\/pre>\n\n\n\n<p>Die Originaldatei bleibt unver\u00e4ndert. Sed gibt die Ergebnisse standardm\u00e4\u00dfig auf stdout aus. Sobald du sicher bist, dass die Ausgabe stimmt, h\u00e4nge <code>-i<\/code> an, um die \u00c4nderungen in die Datei zur\u00fcckzuschreiben. Immer erst testen, dann schreiben.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-das-n-te-vorkommen-in-einer-zeile-ersetzen\">Das n-te Vorkommen in einer Zeile ersetzen<\/h3>\n\n\n\n<p>Wenn ein Wort in derselben Zeile mehrfach vorkommt und du nur eine bestimmte Stelle \u00e4ndern willst, f\u00fcge ein Zahlen-Flag hinzu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed 's\/old_string\/new_string\/2' myfilename.txt<\/code><\/pre>\n\n\n\n<p>Die 2 weist sed an, den ersten Treffer zu \u00fcberspringen und nur das <strong>zweite Vorkommen zu ersetzen<\/strong>. Zum Beispiel: Ersetze das erste &#8222;music&#8220; durch &#8222;song&#8220;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed 's\/music\/song\/1' playlist.txt<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-alle-vorkommen-mit-dem-g-flag-ersetzen\">Alle Vorkommen mit dem g-Flag ersetzen<\/h3>\n\n\n\n<p>Ohne das g-Flag stoppt sed nach dem ersten Treffer pro Zeile. Das <strong>globale sed-Ersetzen<\/strong>-Flag behebt das:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed 's\/eagle\/falcon\/g' birds.txt<\/code><\/pre>\n\n\n\n<p>Jedes &#8222;eagle&#8220; in jeder Zeile wird zu &#8222;falcon&#8220;. Genau das erwarten die meisten, wenn sie an Suchen und Ersetzen denken. Ohne das g-Flag \u00e4ndert sed nur den ersten Treffer pro Zeile und geht weiter. Dieses Standardverhalten l\u00e4sst Einsteiger regelm\u00e4\u00dfig stolpern. Wenn deine Ersetzung einige Treffer zu \u00fcbersehen scheint, fehlt fast sicher das g-Flag.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-vom-n-ten-bis-zum-letzten-vorkommen-ersetzen\">Vom n-ten bis zum letzten Vorkommen ersetzen<\/h3>\n\n\n\n<p>Du kannst eine Zahl mit dem g-Flag kombinieren, um ab einem bestimmten Vorkommen zu ersetzen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed 's\/pisces\/aquarius\/2g' astrology.txt<\/code><\/pre>\n\n\n\n<p>Das \u00fcberspringt das erste &#8222;pisces&#8220; in jeder Zeile und ersetzt vom zweiten Vorkommen bis zum letzten. Ein Nischenfall, aber praktisch, wenn deine Daten eine vorhersehbare Struktur haben.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-erstes-zeichen-jedes-worts-in-klammern-setzen\">Erstes Zeichen jedes Worts in Klammern setzen<\/h3>\n\n\n\n<p>Ein netter <strong>sed-Regex<\/strong>-Trick mit erweiterten regul\u00e4ren Ausdr\u00fccken und einer <strong>sed-Capture-Gruppe<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"An example of the sed command\" | sed -E 's\/(\\b\\w)\/(\\1)\/g'<\/code><\/pre>\n\n\n\n<p>Ausgabe: <code>(A)n (e)xample (o)f (t)he (s)ed (c)ommand<\/code><\/p>\n\n\n\n<p>Um statt einer Pipe-Eingabe eine Datei zu verarbeiten, lass das echo weg und h\u00e4nge den Dateinamen am Ende an.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-einen-string-in-einer-bestimmten-zeile-ersetzen\">Einen String in einer bestimmten Zeile ersetzen<\/h3>\n\n\n\n<p>Stelle dem s-Befehl eine Zeilennummer voran, um <strong>mit sed gezielt eine Zeile zu ersetzen<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed '2s\/cake\/bread\/' foods.txt<\/code><\/pre>\n\n\n\n<p>Nur Zeile 2 wird ver\u00e4ndert. Alles andere wird unver\u00e4ndert durchgereicht. Das ist praktisch, wenn du genau wei\u00dft, in welcher Zeile der zu \u00e4ndernde Wert steht.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-ersetzte-zeilen-mit-dem-p-flag-ausgeben\">Ersetzte Zeilen mit dem \/p-Flag ausgeben<\/h3>\n\n\n\n<p>Das p-Flag gibt jede ver\u00e4nderte Zeile doppelt aus:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed 's\/phones\/tablets\/p' gadgets.txt<\/code><\/pre>\n\n\n\n<p>Zeilen ohne \u00c4nderung werden ganz normal einmal ausgegeben. Ver\u00e4nderte Zeilen erscheinen doppelt: einmal als regul\u00e4re Ausgabe, einmal als zus\u00e4tzliche Ausgabe. Das ist n\u00fctzlich, um schnell zu sehen, welche Zeilen dein Muster tats\u00e4chlich getroffen hat.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-einen-string-in-einem-zeilenbereich-ersetzen\">Einen String in einem Zeilenbereich ersetzen<\/h3>\n\n\n\n<p>Du kannst eine Ersetzung auf einen bestimmten Zeilenbereich eingrenzen. Das ist ein gezielter <strong>sed-Ersetzen-in-Datei<\/strong>-Ansatz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed '3,5 s\/germany\/france\/' countries.txt<\/code><\/pre>\n\n\n\n<p>Nur die Zeilen 3 bis 5 werden verarbeitet. Die Zeilen davor und danach bleiben unber\u00fchrt. Praktisch, um einen bekannten Block in einer Konfigurationsdatei zu bearbeiten.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-nur-die-ersetzten-zeilen-ausgeben\">Nur die ersetzten Zeilen ausgeben<\/h3>\n\n\n\n<p>Kombiniere die <strong>sed-Option -n<\/strong> mit p, um die Standardausgabe zu unterdr\u00fccken und nur ge\u00e4nderte Zeilen anzuzeigen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed -n 's\/green\/blue\/3p' colors.txt<\/code><\/pre>\n\n\n\n<p>Stiller Modus. Nur Zeilen, in denen tats\u00e4chlich eine Ersetzung stattgefunden hat, werden ausgegeben. Perfekt, um dein Muster zu pr\u00fcfen, bevor du mit <code>-i<\/code> die Datei \u00fcberschreibst.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-zeilen-mit-sed-aus-einer-datei-loschen\">Zeilen mit sed aus einer Datei l\u00f6schen<\/h3>\n\n\n\n<p>Der <code>d<\/code> Befehl ist das Werkzeug zum <strong>L\u00f6schen von Zeilen mit sed<\/strong>. Eine einzelne Zeile nach Nummer entfernen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed '1d' cities.txt<\/code><\/pre>\n\n\n\n<p>Einen Bereich l\u00f6schen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed '1,3d' cars.txt<\/code><\/pre>\n\n\n\n<p>Um ab Zeile 2 bis zum Dateiende zu l\u00f6schen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><\/code><\/pre>\n\n\n\n<p>Die letzte Zeile l\u00f6schen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed '$d' filename.txt<\/code><\/pre>\n\n\n\n<p>Alle Zeilen l\u00f6schen, die einem Muster entsprechen (<strong>sed-Zeilen l\u00f6schen<\/strong> per Regex):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed '\/oabo\/d' filestrings.txt<\/code><\/pre>\n\n\n\n<p>Das entfernt jede Zeile mit &#8222;oabo&#8220; aus der Ausgabe. Kombiniere es mit <code>-i<\/code> und du hast einen Einzeiler, der eine Datei in Millisekunden aufr\u00e4umt.<\/p>\n\n\n\n<p>Ein g\u00e4ngiger Praxisfall: Kommentarzeilen aus Konfigurationsdateien entfernen, bevor sie weiterverarbeitet werden. Zum Beispiel entfernt sed &#8218;\/^#\/d&#8216; config.conf alle Zeilen, die mit einem Hash beginnen. Du kannst auch mehrere L\u00f6schmuster mit dem -e-Flag verketten und so mehrere Muster in einem Durchgang bereinigen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-anwendungsfalle-fur-den-sed-befehl\">Anwendungsf\u00e4lle f\u00fcr den sed-Befehl<\/h2>\n\n\n\n<p>Die obigen Beispiele decken die Syntax ab. Schauen wir uns jetzt an, <strong>wie du sed<\/strong> in echten Aufgaben der Serververwaltung einsetzt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-sed-fur-die-batch-dateiverarbeitung\">sed f\u00fcr die Batch-Dateiverarbeitung<\/h3>\n\n\n\n<p>Zwei Ans\u00e4tze. Erstens: Mehrere Dateien explizit auflisten:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed 's\/old_string\/new_string\/g' file1.txt file2.txt file3.txt<\/code><\/pre>\n\n\n\n<p>Zweitens: Mit find ein Verzeichnis durchsuchen. Das ist der echte Power-Move f\u00fcr <strong>sed-Ersetzen in Dateien<\/strong> im gro\u00dfen Stil:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>find \/etc\/myapp\/ -type f -exec sed -i 's\/old_string\/new_string\/g' {} \\;<\/code><\/pre>\n\n\n\n<p>Achtung: Das <code>-i<\/code>-Flag \u00fcberschreibt Dateien direkt. Lege vorher Backups an. Mit <code>-i.bak<\/code> kannst du sed anweisen, vor jeder \u00c4nderung automatisch ein Backup der Datei anzulegen.<\/p>\n\n\n\n<p>Hier spielt sed seine wahre St\u00e4rke f\u00fcr Sysadmins aus. Stell dir vor, du hast einen Dienst auf eine neue IP migriert und musst die Adresse in jeder Nginx-Konfiguration, jedem Cronjob und jedem Skript aktualisieren, das darauf verweist. Ein einziger find+sed-Befehl und du bist in Sekunden fertig. Von Hand w\u00fcrde das den Rest des Nachmittags kosten.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-sed-fur-die-logdatei-analyse\">sed f\u00fcr die Logdatei-Analyse<\/h3>\n\n\n\n<p>Sed kann mehr als nur bearbeiten. Es ist ein brauchbares <strong>sed-Regex<\/strong>-Extraktionstool. Bestimmte Muster aus Logdateien extrahieren und in eine neue Datei umleiten:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed -n 's\/Error: \\(.*\\)\/\\1\/p' logfile.log &gt; error_logs.txt<\/code><\/pre>\n\n\n\n<p>Dieser Befehl findet jede Zeile, die mit &#8222;Error:&#8220; beginnt, und extrahiert alles dahinter. Passe das Muster an, um Zeitstempel, IP-Adressen oder was immer du suchst herauszufiltern. F\u00fcr komplexes Parsing nicht so m\u00e4chtig wie awk oder grep, aber f\u00fcr schnelle Extraktionsjobs erledigt sed das in einer Zeile.<\/p>\n\n\n\n<p>Ein praktisches Muster: Alle 404-Statuscodes aus einem Zugriffsprotokoll ziehen. Oder nur die Zeitstempel aus Eintr\u00e4gen extrahieren, die einen bestimmten Dienst erw\u00e4hnen. Seds eigentlicher Vorteil liegt darin, in einem einzigen Schritt suchen und transformieren zu k\u00f6nnen, statt erst mit grep Treffer zu finden und dann mit cut oder awk die n\u00f6tigen Felder zu extrahieren.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-sed-fur-die-bearbeitung-von-html-und-xml-tags\">sed f\u00fcr die Bearbeitung von HTML- und XML-Tags<\/h3>\n\n\n\n<p>Du musst ein Attribut in einer Reihe von HTML-Dateien \u00e4ndern? <strong>sed-String-Ersetzung<\/strong> kommt mit Markup-Tags problemlos klar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed 's\/\\(&lt;h&#91;1-6].*color:\\) &#91;^;]*\/\\1 black\/g' webpage.html<\/code><\/pre>\n\n\n\n<p>Das findet jedes h1- bis h6-Tag mit einem Inline-Farbstil und tauscht den Wert gegen Schwarz aus. Bei XML funktioniert das genauso. Achte nur auf spitze Klammern und escape sie korrekt.<\/p>\n\n\n\n<p>Dieser Ansatz eignet sich gut f\u00fcr schnelle Korrekturen in statischen HTML-Dateien. Ob du einen Klassennamen in jedem div \u00e4ndern, eine CDN-URL in Script-Tags aktualisieren oder veraltete Attribute aus altem Markup entfernen willst: sed erledigt das, ohne dass du einen vollst\u00e4ndigen XML-Parser brauchst. F\u00fcr tief verschachtelte oder komplexe XML-Strukturen ist ein dediziertes Parsing-Tool wie xmlstarlet die sicherere Wahl. Sed behandelt alles als reinen Text. Es warnt dich also nicht, wenn dein Regex versehentlich Inhalte innerhalb eines Kommentars oder eines CDATA-Blocks trifft.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-sed-mit-externen-skriptdateien-verwenden\">sed mit externen Skriptdateien verwenden<\/h3>\n\n\n\n<p>Wenn du <strong>mehrere sed-Befehle<\/strong> ausf\u00fchrst, wird es schnell un\u00fcbersichtlich, alles in eine Zeile zu packen. Lagere sie stattdessen in eine Datei aus.<\/p>\n\n\n\n<p>Erstelle eine Skriptdatei:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano script.sed<\/code><\/pre>\n\n\n\n<p>Trage deine Befehle ein, einen pro Zeile (Anf\u00fchrungszeichen sind nicht n\u00f6tig):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>s\/old_pattern1\/new_pattern1\/g<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\/old_pattern2\/d<\/code><\/pre>\n\n\n\n<p>Ausf\u00fchren:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed -f script.sed target_file.txt<\/code><\/pre>\n\n\n\n<p>\u00dcbersichtlicher, versionierbar und deutlich weniger anf\u00e4llig f\u00fcr Quoting-Probleme. Sobald du mehr als zwei oder drei Befehle brauchst, nutze eine Skriptdatei.<\/p>\n\n\n\n<p>Skriptdateien machen deine sed-Operationen au\u00dferdem wiederholbar. Lege sie im Repository deines Projekts ab, schreibe einen Kommentar an den Anfang, der erkl\u00e4rt, was sie tun, und du hast eine dokumentierte Texttransformation, die jeder im Team ausf\u00fchren kann. Das ist deutlich besser als ein Einzeiler in deiner Bash-History, den nach drei Monaten niemand mehr nachvollziehen kann.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-sed-backreferences-in-regex\">sed-Backreferences in Regex<\/h3>\n\n\n\n<p>Mit einer <strong>sed-Backreference<\/strong> kannst du einen Teil eines Treffers erfassen und in der Ersetzung wiederverwenden. Der erfasste Teil wird als <strong>sed-Capture-Gruppe<\/strong> bezeichnet und in escaped Klammern gesetzt.<\/p>\n\n\n\n<p>Klassisches Beispiel: &#8222;Last, First&#8220; zu &#8222;First Last&#8220; umordnen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"Doe, John\" | sed 's\/\\(.*\\), \\(.*\\)\/\\2 \\1\/'<\/code><\/pre>\n\n\n\n<p>Ausgabe: <code>John Doe<\/code><\/p>\n\n\n\n<p>\\1 verweist auf die erste Capture-Gruppe (&#8222;Doe&#8220;), \\2 auf die zweite (&#8222;John&#8220;). Ein <strong>regul\u00e4rer sed-Ausdruck<\/strong> mit Backreferences kann Datumsformate umstellen, CSV-Spalten umsortieren oder Teilstrings aus strukturiertem Text extrahieren. Es ist eines der Features, das sed von &#8222;praktisch&#8220; zu &#8222;richtig m\u00e4chtig&#8220; macht.<\/p>\n\n\n\n<p>Du kannst in einem einzelnen sed-Ausdruck bis zu neun Capture-Gruppen verwenden. In der Praxis bist du ab drei oder vier Gruppen mit Perl oder Python besser bedient. F\u00fcr Zwei-Gruppen-Operationen wie das Vertauschen von Feldern, das Umkehren von Namensformaten oder das Umstrukturieren einfacher Datens\u00e4tze sind sed-Backreferences schnell geschrieben und schnell ausgef\u00fchrt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-linux-sed-befehl-faq\">Linux sed-Befehl FAQ<\/h2>\n\n\n\n<div class=\"schema-faq wp-block-yoast-faq-block\"><div class=\"schema-faq-section\" id=\"faq-question-1773928518579\"><strong class=\"schema-faq-question\">Was ist der sed-Befehl in Linux?<\/strong> <p class=\"schema-faq-answer\">Der sed-Befehl in Linux ist ein Stream-Editor, der Text direkt \u00fcber die Kommandozeile filtert und transformiert. Er liest die Eingabe zeilenweise, wendet deine Bearbeitungsregeln an und gibt das Ergebnis auf der Standardausgabe aus. Du musst eine Datei nicht erst in einem Editor \u00f6ffnen, um sie zu \u00e4ndern. sed geh\u00f6rt seit den 1970er Jahren zu Unix und ist nach wie vor einer der schnellsten Wege, Text auf einem Linux-System zu bearbeiten. sed unterst\u00fctzt regul\u00e4re Ausdr\u00fccke, arbeitet mit Pipe-Eingaben und verarbeitet Dateien jeder Gr\u00f6\u00dfe, weil es sie zeilenweise abarbeitet, statt alles in den Speicher zu laden.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1773928527016\"><strong class=\"schema-faq-question\">Wie unterscheidet sich sed von grep?<\/strong> <p class=\"schema-faq-answer\">Beides sind Textverarbeitungswerkzeuge, aber sie erf\u00fcllen unterschiedliche Aufgaben. Grep durchsucht Dateien nach Mustern und gibt die passenden Zeilen aus. Mehr nicht. sed kann suchen und ver\u00e4ndern: Text ersetzen, Zeilen l\u00f6schen, Inhalte einf\u00fcgen, Strings umsortieren. Stell dir grep als Taschenlampe vor (findet Dinge) und sed vs. grep als Schweizer Taschenmesser (findet und behebt Dinge).<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1773928535598\"><strong class=\"schema-faq-question\">Wie wird sed in einem Bash-Skript verwendet?<\/strong> <p class=\"schema-faq-answer\">Innerhalb von Bash-Skripten \u00fcbernimmt sed typischerweise drei Aufgaben: bestimmte Zeilen auf stdout ausgeben, unerw\u00fcnschten Text l\u00f6schen und Strings ersetzen. Du kannst die sed-Ausgabe Variablen zuweisen, sie an andere Befehle pipen oder damit Konfigurationsdateien bei automatisierten Deployments anpassen. Die Syntax ist identisch mit dem, was du auch interaktiv eingeben w\u00fcrdest. Ein g\u00e4ngiges Muster ist die Verwendung von Shell-Variablen innerhalb von sed-Befehlen mit doppelten Anf\u00fchrungszeichen: <code>sed \"s\/$OLD\/$NEW\/g\" file.txt<\/code>. Einfache Anf\u00fchrungszeichen verhindern die Variablenexpansion. Wechsle also zu doppelten Anf\u00fchrungszeichen, wenn deine Muster aus Variablen stammen.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1773928544391\"><strong class=\"schema-faq-question\">Wie unterscheidet sich sed von awk?<\/strong> <p class=\"schema-faq-answer\">sed \u00fcbernimmt einfache Textsubstitution, L\u00f6schung und Einf\u00fcgung. awk ist eine vollwertige Programmiersprache, die f\u00fcr spaltenbasierte Datenverarbeitung entwickelt wurde. Es unterst\u00fctzt Variablen, Bedingungen, Schleifen und Arithmetik. Die Faustregel: Wenn du einen String ersetzen willst, nimm sed. Wenn du eine Zahlenspalte summieren oder etwas tun willst, das sich wie eine Tabellenkalkulationsoperation anf\u00fchlt, greife zu awk. sed vs. awk l\u00e4uft auf Einfachheit gegen\u00fcber Funktionsumfang hinaus.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1773928553696\"><strong class=\"schema-faq-question\">Wie entferne ich leere Zeilen mit sed?<\/strong> <p class=\"schema-faq-answer\">Verwende den d-Befehl mit einem Muster, das auf leere Zeilen passt:<br><code>sed '\/^$\/d' myfilename.txt<\/code><br>Der Regex <code>^$<\/code> trifft Zeilen, in denen zwischen Anfang und Ende nichts steht. Das ist einer der meistgenutzten sed-Einzeiler zum Entfernen leerer Zeilen. F\u00fcge <code>-i<\/code> hinzu, um die Datei direkt zu bearbeiten.<\/p> <\/div> <\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jeder Sysadmin steht irgendwann vor demselben Problem: 400 Konfigurationsdateien, eine falsche IP-Adresse in jeder einzelnen, und null Lust, sie alle von Hand zu \u00f6ffnen. Genau hier spielt der sed-Befehl seine St\u00e4rke aus. Mit dem Linux sed-Befehl (kurz f\u00fcr Stream Editor) kannst du Text in Dateien direkt im Terminal suchen, ersetzen, einf\u00fcgen und l\u00f6schen. Keine GUI, [&hellip;]<\/p>\n","protected":false},"author":44,"featured_media":28522,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1399],"tags":[1443],"ppma_author":[3402],"class_list":["post-29525","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-linux-de"],"uagb_featured_image_src":{"full":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_linux-sed-command-cheat-sheet.webp",1200,630,false],"thumbnail":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_linux-sed-command-cheat-sheet-150x150.webp",150,150,true],"medium":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_linux-sed-command-cheat-sheet-600x315.webp",600,315,true],"medium_large":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_linux-sed-command-cheat-sheet-768x403.webp",768,403,true],"large":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_linux-sed-command-cheat-sheet.webp",1200,630,false],"1536x1536":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_linux-sed-command-cheat-sheet.webp",1200,630,false],"2048x2048":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_linux-sed-command-cheat-sheet.webp",1200,630,false]},"uagb_author_info":{"display_name":"Milan Ivanovic","author_link":"https:\/\/contabo.com\/blog\/de\/author\/milan\/"},"uagb_comment_info":0,"uagb_excerpt":"Jeder Sysadmin steht irgendwann vor demselben Problem: 400 Konfigurationsdateien, eine falsche IP-Adresse in jeder einzelnen, und null Lust, sie alle von Hand zu \u00f6ffnen. Genau hier spielt der sed-Befehl seine St\u00e4rke aus. Mit dem Linux sed-Befehl (kurz f\u00fcr Stream Editor) kannst du Text in Dateien direkt im Terminal suchen, ersetzen, einf\u00fcgen und l\u00f6schen. Keine GUI,&hellip;","authors":[{"term_id":3402,"user_id":0,"is_guest":1,"slug":"contabro","display_name":"ContaBro","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts\/29525","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/users\/44"}],"replies":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/comments?post=29525"}],"version-history":[{"count":3,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts\/29525\/revisions"}],"predecessor-version":[{"id":29533,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts\/29525\/revisions\/29533"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/media\/28522"}],"wp:attachment":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/media?parent=29525"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/categories?post=29525"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/tags?post=29525"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/ppma_author?post=29525"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}